diff --git a/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java index 7aaa8fce2..f53b45291 100644 --- a/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java @@ -7,7 +7,8 @@ import dk.camelot64.kickc.model.values.RValue; */ public class SymbolTypeArray extends SymbolTypePointer { - /** The fixed size of the array. Can be null, if the size is not bound. (It will be constant before the compilation is done) */ + /** The fixed size of the array. Can be null, if the size is not bound. + * If it si non-null it must be constant before the compilation is done. */ private RValue size; public SymbolTypeArray(SymbolType elementType, RValue size) { diff --git a/src/test/ref/c-types.asm b/src/test/ref/c-types.asm index c2211c3d6..1d9a424d6 100644 --- a/src/test/ref/c-types.asm +++ b/src/test/ref/c-types.asm @@ -230,7 +230,13 @@ testInt: { print_sword: { .label w = 8 lda w+1 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_word + rts + b1: lda #'-' jsr print_char sec @@ -240,9 +246,7 @@ print_sword: { lda #0 sbc w+1 sta w+1 - b1: - jsr print_word - rts + jmp b2 } testShort: { .const u = $578 diff --git a/src/test/ref/c-types.cfg b/src/test/ref/c-types.cfg index fcc0e2af0..326f39408 100644 --- a/src/test/ref/c-types.cfg +++ b/src/test/ref/c-types.cfg @@ -31,7 +31,7 @@ main::@return: scope:[main] from main::@4 [14] return to:@return testLong: scope:[testLong] from main::@4 - [15] (byte*~) print_char_cursor#156 ← (byte*) print_line_cursor#1 + [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [16] call print_str to:testLong::@1 testLong::@1: scope:[testLong] from testLong @@ -67,7 +67,7 @@ print_ln: scope:[print_ln] from testChar::@6 testInt::@6 testLong::@6 testShort print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [31] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 - [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1 + [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [34] return @@ -92,7 +92,7 @@ print_sdword::@return: scope:[print_sdword] from print_sdword::@1 [43] return to:@return print_dword: scope:[print_dword] from print_sdword::@1 testLong::@1 - [44] (byte*) print_char_cursor#140 ← phi( print_sdword::@1/(byte*) print_char_cursor#24 testLong::@1/(byte*) print_char_cursor#132 ) + [44] (byte*) print_char_cursor#143 ← phi( print_sdword::@1/(byte*) print_char_cursor#25 testLong::@1/(byte*) print_char_cursor#134 ) [44] (dword) print_dword::dw#2 ← phi( print_sdword::@1/(dword) print_dword::dw#0 testLong::@1/(const dword) testLong::u#0 ) [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [46] call print_word @@ -104,9 +104,9 @@ print_dword::@1: scope:[print_dword] from print_dword print_dword::@return: scope:[print_dword] from print_dword::@1 [49] return to:@return -print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@1 testInt::@1 testShort::@1 - [50] (byte*) print_char_cursor#139 ← phi( print_dword/(byte*) print_char_cursor#140 print_dword::@1/(byte*) print_char_cursor#24 print_sword::@1/(byte*) print_char_cursor#24 testInt::@1/(byte*) print_char_cursor#132 testShort::@1/(byte*) print_char_cursor#132 ) - [50] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 ) +print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1 + [50] (byte*) print_char_cursor#142 ← phi( print_dword/(byte*) print_char_cursor#143 print_dword::@1/(byte*) print_char_cursor#25 print_sword::@2/(byte*) print_char_cursor#25 testInt::@1/(byte*) print_char_cursor#134 testShort::@1/(byte*) print_char_cursor#134 ) + [50] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 ) [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 [52] call print_byte to:print_word::@1 @@ -118,35 +118,35 @@ print_word::@return: scope:[print_word] from print_word::@1 [55] return to:@return print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1 - [56] (byte*) print_char_cursor#143 ← phi( print_sbyte::@2/(byte*) print_char_cursor#24 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#24 testChar::@1/(byte*) print_char_cursor#132 ) + [56] (byte*) print_char_cursor#146 ← phi( print_sbyte::@2/(byte*) print_char_cursor#25 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#25 testChar::@1/(byte*) print_char_cursor#134 ) [56] (byte) print_byte::b#4 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(const byte) testChar::u#0 ) [57] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte) 4 - [58] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [59] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f - [61] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [62] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 [63] return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@2 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 - [64] (byte*) print_char_cursor#90 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#24 print_sbyte::@1/(byte*) print_char_cursor#24 print_sbyte::@3/(byte*) print_char_cursor#24 print_sdword::@2/(byte*) print_char_cursor#24 print_sword::@2/(byte*) print_char_cursor#24 testChar::@2/(byte*) print_char_cursor#24 testChar::@4/(byte*) print_char_cursor#24 testInt::@2/(byte*) print_char_cursor#24 testInt::@4/(byte*) print_char_cursor#24 testLong::@2/(byte*) print_char_cursor#24 testLong::@4/(byte*) print_char_cursor#24 testShort::@2/(byte*) print_char_cursor#24 testShort::@4/(byte*) print_char_cursor#24 ) - [64] (byte) print_char::ch#14 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sdword::@2/(byte) '-' print_sword::@2/(byte) '-' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' ) - [65] *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14 - [66] (byte*) print_char_cursor#24 ← ++ (byte*) print_char_cursor#90 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 + [64] (byte*) print_char_cursor#92 ← phi( print_byte/(byte*) print_char_cursor#146 print_byte::@1/(byte*) print_char_cursor#25 print_sbyte::@1/(byte*) print_char_cursor#25 print_sbyte::@3/(byte*) print_char_cursor#25 print_sdword::@2/(byte*) print_char_cursor#25 print_sword::@1/(byte*) print_char_cursor#25 print_sword::@3/(byte*) print_char_cursor#25 testChar::@2/(byte*) print_char_cursor#25 testChar::@4/(byte*) print_char_cursor#25 testInt::@2/(byte*) print_char_cursor#25 testInt::@4/(byte*) print_char_cursor#25 testLong::@2/(byte*) print_char_cursor#25 testLong::@4/(byte*) print_char_cursor#25 testShort::@2/(byte*) print_char_cursor#25 testShort::@4/(byte*) print_char_cursor#25 ) + [64] (byte) print_char::ch#15 ← phi( print_byte/(byte) print_char::ch#5 print_byte::@1/(byte) print_char::ch#6 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' ) + [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 + [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 to:print_char::@return print_char::@return: scope:[print_char] from print_char [67] return to:@return print_str: scope:[print_str] from testChar testInt testLong testShort - [68] (byte*) print_char_cursor#150 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#155 testLong/(byte*~) print_char_cursor#156 testShort/(byte*~) print_char_cursor#157 ) + [68] (byte*) print_char_cursor#153 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#158 testLong/(byte*~) print_char_cursor#159 testShort/(byte*~) print_char_cursor#160 ) [68] (byte*) print_str::str#7 ← phi( testChar/(const string) testChar::str testInt/(const string) testInt::str testLong/(const string) testLong::str testShort/(const string) testShort::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [69] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#150 print_str::@2/(byte*) print_char_cursor#1 ) + [69] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#153 print_str::@2/(byte*) print_char_cursor#1 ) [69] (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 ) [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -154,12 +154,12 @@ print_str::@return: scope:[print_str] from print_str::@1 [71] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [72] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#5) - [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 + [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) + [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 [74] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 to:print_str::@1 testInt: scope:[testInt] from main::@3 - [75] (byte*~) print_char_cursor#155 ← (byte*) print_line_cursor#1 + [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 [76] call print_str to:testInt::@1 testInt::@1: scope:[testInt] from testInt @@ -190,118 +190,122 @@ testInt::@return: scope:[testInt] from testInt::@6 [89] return to:@return print_sword: scope:[print_sword] from testInt::@3 testInt::@5 testShort::@3 testShort::@5 - [90] (signed word) print_sword::w#5 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 ) - [91] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [90] (signed word) print_sword::w#10 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 ) + [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [92] phi() [93] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [95] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 ) - [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 - [97] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [94] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 ) + [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + [96] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [98] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [97] return to:@return +print_sword::@1: scope:[print_sword] from print_sword + [98] phi() + [99] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 + to:print_sword::@2 testShort: scope:[testShort] from main::@2 - [99] (byte*~) print_char_cursor#157 ← (byte*) print_line_cursor#1 - [100] call print_str + [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 + [102] call print_str to:testShort::@1 testShort::@1: scope:[testShort] from testShort - [101] phi() - [102] call print_word + [103] phi() + [104] call print_word to:testShort::@2 testShort::@2: scope:[testShort] from testShort::@1 - [103] phi() - [104] call print_char + [105] phi() + [106] call print_char to:testShort::@3 testShort::@3: scope:[testShort] from testShort::@2 - [105] phi() - [106] call print_sword + [107] phi() + [108] call print_sword to:testShort::@4 testShort::@4: scope:[testShort] from testShort::@3 - [107] phi() - [108] call print_char + [109] phi() + [110] call print_char to:testShort::@5 testShort::@5: scope:[testShort] from testShort::@4 - [109] phi() - [110] call print_sword + [111] phi() + [112] call print_sword to:testShort::@6 testShort::@6: scope:[testShort] from testShort::@5 - [111] phi() - [112] call print_ln + [113] phi() + [114] call print_ln to:testShort::@return testShort::@return: scope:[testShort] from testShort::@6 - [113] return + [115] return to:@return testChar: scope:[testChar] from main::@1 - [114] phi() - [115] call print_str + [116] phi() + [117] call print_str to:testChar::@1 testChar::@1: scope:[testChar] from testChar - [116] phi() - [117] call print_byte + [118] phi() + [119] call print_byte to:testChar::@2 testChar::@2: scope:[testChar] from testChar::@1 - [118] phi() - [119] call print_char + [120] phi() + [121] call print_char to:testChar::@3 testChar::@3: scope:[testChar] from testChar::@2 - [120] phi() - [121] call print_sbyte + [122] phi() + [123] call print_sbyte to:testChar::@4 testChar::@4: scope:[testChar] from testChar::@3 - [122] phi() - [123] call print_char + [124] phi() + [125] call print_char to:testChar::@5 testChar::@5: scope:[testChar] from testChar::@4 - [124] phi() - [125] call print_sbyte + [126] phi() + [127] call print_sbyte to:testChar::@6 testChar::@6: scope:[testChar] from testChar::@5 - [126] phi() - [127] call print_ln + [128] phi() + [129] call print_ln to:testChar::@return testChar::@return: scope:[testChar] from testChar::@6 - [128] return + [130] return to:@return print_sbyte: scope:[print_sbyte] from testChar::@3 testChar::@5 - [129] (signed byte) print_sbyte::b#3 ← phi( testChar::@3/(const signed byte) testChar::n#0 testChar::@5/(const signed byte) testChar::s#0 ) - [130] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 + [131] (signed byte) print_sbyte::b#3 ← phi( testChar::@3/(const signed byte) testChar::n#0 testChar::@5/(const signed byte) testChar::s#0 ) + [132] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [131] phi() - [132] call print_char + [133] phi() + [134] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [133] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 ) - [134] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 - [135] call print_byte + [135] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 ) + [136] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 + [137] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [136] return + [138] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [137] phi() - [138] call print_char + [139] phi() + [140] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [139] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 + [141] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 to:print_sbyte::@2 print_cls: scope:[print_cls] from main - [140] phi() + [142] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [141] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [142] *((byte*) print_cls::sc#2) ← (byte) ' ' - [143] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [144] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [143] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [144] *((byte*) print_cls::sc#2) ← (byte) ' ' + [145] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [146] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [145] return + [147] return to:@return diff --git a/src/test/ref/c-types.log b/src/test/ref/c-types.log index 533d84f6d..56555afe7 100644 --- a/src/test/ref/c-types.log +++ b/src/test/ref/c-types.log @@ -20,6 +20,7 @@ Culled Empty Block (label) print_str::@6 Culled Empty Block (label) @3 Culled Empty Block (label) @4 Culled Empty Block (label) @5 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @6 Culled Empty Block (label) print_sbyte::@4 Culled Empty Block (label) @7 @@ -46,37 +47,37 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@12 print_str: scope:[print_str] from testChar testInt testLong testShort - (byte*) print_char_cursor#150 ← phi( testChar/(byte*) print_char_cursor#145 testInt/(byte*) print_char_cursor#147 testLong/(byte*) print_char_cursor#148 testShort/(byte*) print_char_cursor#146 ) + (byte*) print_char_cursor#153 ← phi( testChar/(byte*) print_char_cursor#148 testInt/(byte*) print_char_cursor#150 testLong/(byte*) print_char_cursor#151 testShort/(byte*) print_char_cursor#149 ) (byte*) print_str::str#7 ← phi( testChar/(byte*) print_str::str#1 testInt/(byte*) print_str::str#3 testLong/(byte*) print_str::str#4 testShort/(byte*) print_str::str#2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#150 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#153 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#5) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#67 ← phi( print_str::@1/(byte*) print_char_cursor#132 ) + (byte*) print_char_cursor#68 ← phi( print_str::@1/(byte*) print_char_cursor#134 ) (byte*) print_str::str#6 ← phi( print_str::@1/(byte*) print_str::str#5 ) - *((byte*) print_char_cursor#67) ← *((byte*) print_str::str#6) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#67 + *((byte*) print_char_cursor#68) ← *((byte*) print_str::str#6) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#68 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#6 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#68 ← phi( print_str::@1/(byte*) print_char_cursor#132 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#68 + (byte*) print_char_cursor#69 ← phi( print_str::@1/(byte*) print_char_cursor#134 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#69 return to:@return print_ln: scope:[print_ln] from testChar::@6 testInt::@6 testLong::@6 testShort::@6 - (byte*) print_char_cursor#133 ← phi( testChar::@6/(byte*) print_char_cursor#39 testInt::@6/(byte*) print_char_cursor#55 testLong::@6/(byte*) print_char_cursor#63 testShort::@6/(byte*) print_char_cursor#47 ) + (byte*) print_char_cursor#135 ← phi( testChar::@6/(byte*) print_char_cursor#40 testInt::@6/(byte*) print_char_cursor#56 testLong::@6/(byte*) print_char_cursor#64 testShort::@6/(byte*) print_char_cursor#48 ) (byte*) print_line_cursor#39 ← phi( testChar::@6/(byte*) print_line_cursor#41 testInt::@6/(byte*) print_line_cursor#43 testLong::@6/(byte*) print_line_cursor#44 testShort::@6/(byte*) print_line_cursor#42 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#69 ← phi( print_ln/(byte*) print_char_cursor#133 print_ln::@1/(byte*) print_char_cursor#69 ) + (byte*) print_char_cursor#70 ← phi( print_ln/(byte*) print_char_cursor#135 print_ln::@1/(byte*) print_char_cursor#70 ) (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#20 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#69 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#70 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -84,120 +85,130 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#21 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#70 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) + (byte*) print_char_cursor#71 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) (byte*) print_line_cursor#22 ← phi( print_ln::@2/(byte*) print_line_cursor#21 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#22 - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#70 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#71 return to:@return print_sword: scope:[print_sword] from testInt::@3 testInt::@5 testShort::@3 testShort::@5 - (byte*) print_char_cursor#151 ← phi( testInt::@3/(byte*) print_char_cursor#52 testInt::@5/(byte*) print_char_cursor#54 testShort::@3/(byte*) print_char_cursor#44 testShort::@5/(byte*) print_char_cursor#46 ) + (byte*) print_char_cursor#154 ← phi( testInt::@3/(byte*) print_char_cursor#53 testInt::@5/(byte*) print_char_cursor#55 testShort::@3/(byte*) print_char_cursor#45 testShort::@5/(byte*) print_char_cursor#47 ) (signed word) print_sword::w#5 ← phi( testInt::@3/(signed word) print_sword::w#3 testInt::@5/(signed word) print_sword::w#4 testShort::@3/(signed word) print_sword::w#1 testShort::@5/(signed word) print_sword::w#2 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#151 print_sword::@4/(byte*) print_char_cursor#6 ) - (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#6 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#71 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#71 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#135 ← phi( print_sword/(byte*) print_char_cursor#151 ) + (byte*) print_char_cursor#136 ← phi( print_sword/(byte*) print_char_cursor#154 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#7 ← phi( print_sword::@2/(signed word) print_sword::w#8 ) - (byte*) print_char_cursor#72 ← phi( print_sword::@2/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#72 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#7 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#6 ← phi( print_sword::@1/(signed word) print_sword::w#8 ) + (byte*) print_char_cursor#72 ← phi( print_sword::@1/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#72 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#6 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#73 ← phi( print_sword::@3/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#73 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#10 ← phi( print_sword/(signed word) print_sword::w#5 ) + (byte*) print_char_cursor#137 ← phi( print_sword/(byte*) print_char_cursor#154 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#9 ← phi( print_sword::@3/(signed word) print_sword::w#10 ) + (byte*) print_char_cursor#73 ← phi( print_sword::@3/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#73 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#138 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) + (signed word) print_sword::w#7 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#9 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#7 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#74 ← phi( print_sword::@2/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#74 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#75 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#75 return to:@return print_sbyte: scope:[print_sbyte] from testChar::@3 testChar::@5 - (byte*) print_char_cursor#152 ← phi( testChar::@3/(byte*) print_char_cursor#36 testChar::@5/(byte*) print_char_cursor#38 ) + (byte*) print_char_cursor#155 ← phi( testChar::@3/(byte*) print_char_cursor#37 testChar::@5/(byte*) print_char_cursor#39 ) (signed byte) print_sbyte::b#3 ← phi( testChar::@3/(signed byte) print_sbyte::b#1 testChar::@5/(signed byte) print_sbyte::b#2 ) (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#3 < (number) 0 if((bool~) print_sbyte::$0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@1: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#6 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 ) - (byte*) print_char_cursor#136 ← phi( print_sbyte/(byte*) print_char_cursor#152 ) - (byte) print_char::ch#1 ← (byte) '-' + (byte*) print_char_cursor#139 ← phi( print_sbyte/(byte*) print_char_cursor#155 ) + (byte) print_char::ch#2 ← (byte) '-' call print_char to:print_sbyte::@5 print_sbyte::@5: scope:[print_sbyte] from print_sbyte::@1 (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@1/(signed byte) print_sbyte::b#6 ) - (byte*) print_char_cursor#74 ← phi( print_sbyte::@1/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#74 + (byte*) print_char_cursor#76 ← phi( print_sbyte::@1/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#76 (signed byte~) print_sbyte::$5 ← - (signed byte) print_sbyte::b#4 (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$5 to:print_sbyte::@2 print_sbyte::@3: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#8 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 ) - (byte*) print_char_cursor#137 ← phi( print_sbyte/(byte*) print_char_cursor#152 ) - (byte) print_char::ch#2 ← (byte) ' ' + (byte*) print_char_cursor#140 ← phi( print_sbyte/(byte*) print_char_cursor#155 ) + (byte) print_char::ch#3 ← (byte) ' ' call print_char to:print_sbyte::@6 print_sbyte::@6: scope:[print_sbyte] from print_sbyte::@3 (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@3/(signed byte) print_sbyte::b#8 ) - (byte*) print_char_cursor#75 ← phi( print_sbyte::@3/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#75 + (byte*) print_char_cursor#77 ← phi( print_sbyte::@3/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#77 to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@5 print_sbyte::@6 - (byte*) print_char_cursor#138 ← phi( print_sbyte::@5/(byte*) print_char_cursor#8 print_sbyte::@6/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#141 ← phi( print_sbyte::@5/(byte*) print_char_cursor#9 print_sbyte::@6/(byte*) print_char_cursor#10 ) (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@6/(signed byte) print_sbyte::b#7 ) (byte~) print_sbyte::$1 ← ((byte)) (signed byte) print_sbyte::b#5 (byte) print_byte::b#0 ← (byte~) print_sbyte::$1 call print_byte to:print_sbyte::@7 print_sbyte::@7: scope:[print_sbyte] from print_sbyte::@2 - (byte*) print_char_cursor#76 ← phi( print_sbyte::@2/(byte*) print_char_cursor#23 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#76 + (byte*) print_char_cursor#78 ← phi( print_sbyte::@2/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#78 to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@7 - (byte*) print_char_cursor#77 ← phi( print_sbyte::@7/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#77 + (byte*) print_char_cursor#79 ← phi( print_sbyte::@7/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#79 return to:@return -print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@1 testInt::@1 testShort::@1 - (byte*) print_char_cursor#139 ← phi( print_dword/(byte*) print_char_cursor#140 print_dword::@1/(byte*) print_char_cursor#15 print_sword::@1/(byte*) print_char_cursor#134 testInt::@1/(byte*) print_char_cursor#50 testShort::@1/(byte*) print_char_cursor#42 ) - (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 testInt::@1/(word) print_word::w#4 testShort::@1/(word) print_word::w#3 ) +print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1 + (byte*) print_char_cursor#142 ← phi( print_dword/(byte*) print_char_cursor#143 print_dword::@1/(byte*) print_char_cursor#16 print_sword::@2/(byte*) print_char_cursor#138 testInt::@1/(byte*) print_char_cursor#51 testShort::@1/(byte*) print_char_cursor#43 ) + (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(word) print_word::w#4 testShort::@1/(word) print_word::w#3 ) (byte~) print_word::$0 ← > (word) print_word::w#5 (byte) print_byte::b#1 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#6 ← phi( print_word/(word) print_word::w#5 ) - (byte*) print_char_cursor#78 ← phi( print_word/(byte*) print_char_cursor#23 ) - (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#78 + (byte*) print_char_cursor#80 ← phi( print_word/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#80 (byte~) print_word::$2 ← < (word) print_word::w#6 (byte) print_byte::b#2 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#79 ← phi( print_word::@1/(byte*) print_char_cursor#23 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#79 + (byte*) print_char_cursor#81 ← phi( print_word::@1/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#81 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#80 ← phi( print_word::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#80 + (byte*) print_char_cursor#82 ← phi( print_word::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#82 return to:@return print_dword: scope:[print_dword] from print_sdword::@1 testLong::@1 - (byte*) print_char_cursor#140 ← phi( print_sdword::@1/(byte*) print_char_cursor#141 testLong::@1/(byte*) print_char_cursor#58 ) + (byte*) print_char_cursor#143 ← phi( print_sdword::@1/(byte*) print_char_cursor#144 testLong::@1/(byte*) print_char_cursor#59 ) (dword) print_dword::dw#2 ← phi( print_sdword::@1/(dword) print_dword::dw#0 testLong::@1/(dword) print_dword::dw#1 ) (word~) print_dword::$0 ← > (dword) print_dword::dw#2 (word) print_word::w#1 ← (word~) print_dword::$0 @@ -205,96 +216,96 @@ print_dword: scope:[print_dword] from print_sdword::@1 testLong::@1 to:print_dword::@1 print_dword::@1: scope:[print_dword] from print_dword (dword) print_dword::dw#3 ← phi( print_dword/(dword) print_dword::dw#2 ) - (byte*) print_char_cursor#81 ← phi( print_dword/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#81 + (byte*) print_char_cursor#83 ← phi( print_dword/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#83 (word~) print_dword::$2 ← < (dword) print_dword::dw#3 (word) print_word::w#2 ← (word~) print_dword::$2 call print_word to:print_dword::@2 print_dword::@2: scope:[print_dword] from print_dword::@1 - (byte*) print_char_cursor#82 ← phi( print_dword::@1/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#82 + (byte*) print_char_cursor#84 ← phi( print_dword::@1/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#84 to:print_dword::@return print_dword::@return: scope:[print_dword] from print_dword::@2 - (byte*) print_char_cursor#83 ← phi( print_dword::@2/(byte*) print_char_cursor#16 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#83 + (byte*) print_char_cursor#85 ← phi( print_dword::@2/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#85 return to:@return print_sdword: scope:[print_sdword] from testLong::@3 testLong::@5 - (byte*) print_char_cursor#153 ← phi( testLong::@3/(byte*) print_char_cursor#60 testLong::@5/(byte*) print_char_cursor#62 ) + (byte*) print_char_cursor#156 ← phi( testLong::@3/(byte*) print_char_cursor#61 testLong::@5/(byte*) print_char_cursor#63 ) (signed dword) print_sdword::dw#3 ← phi( testLong::@3/(signed dword) print_sdword::dw#1 testLong::@5/(signed dword) print_sdword::dw#2 ) (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#3 < (number) 0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 if((bool~) print_sdword::$1) goto print_sdword::@1 to:print_sdword::@2 print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@4 - (byte*) print_char_cursor#141 ← phi( print_sdword/(byte*) print_char_cursor#153 print_sdword::@4/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#144 ← phi( print_sdword/(byte*) print_char_cursor#156 print_sdword::@4/(byte*) print_char_cursor#20 ) (signed dword) print_sdword::dw#4 ← phi( print_sdword/(signed dword) print_sdword::dw#3 print_sdword::@4/(signed dword) print_sdword::dw#0 ) (dword~) print_sdword::$2 ← ((dword)) (signed dword) print_sdword::dw#4 (dword) print_dword::dw#0 ← (dword~) print_sdword::$2 call print_dword to:print_sdword::@3 print_sdword::@3: scope:[print_sdword] from print_sdword::@1 - (byte*) print_char_cursor#84 ← phi( print_sdword::@1/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#84 + (byte*) print_char_cursor#86 ← phi( print_sdword::@1/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#86 to:print_sdword::@return print_sdword::@2: scope:[print_sdword] from print_sdword (signed dword) print_sdword::dw#6 ← phi( print_sdword/(signed dword) print_sdword::dw#3 ) - (byte*) print_char_cursor#142 ← phi( print_sdword/(byte*) print_char_cursor#153 ) - (byte) print_char::ch#3 ← (byte) '-' + (byte*) print_char_cursor#145 ← phi( print_sdword/(byte*) print_char_cursor#156 ) + (byte) print_char::ch#4 ← (byte) '-' call print_char to:print_sdword::@4 print_sdword::@4: scope:[print_sdword] from print_sdword::@2 (signed dword) print_sdword::dw#5 ← phi( print_sdword::@2/(signed dword) print_sdword::dw#6 ) - (byte*) print_char_cursor#85 ← phi( print_sdword::@2/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#85 + (byte*) print_char_cursor#87 ← phi( print_sdword::@2/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#87 (signed dword~) print_sdword::$5 ← - (signed dword) print_sdword::dw#5 (signed dword) print_sdword::dw#0 ← (signed dword~) print_sdword::$5 to:print_sdword::@1 print_sdword::@return: scope:[print_sdword] from print_sdword::@3 - (byte*) print_char_cursor#86 ← phi( print_sdword::@3/(byte*) print_char_cursor#18 ) - (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#86 + (byte*) print_char_cursor#88 ← phi( print_sdword::@3/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#88 return to:@return @12: scope:[] from @begin (byte*) print_screen#6 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#154 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#157 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#50 ← phi( @begin/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@24 print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1 - (byte*) print_char_cursor#143 ← phi( print_sbyte::@2/(byte*) print_char_cursor#138 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#12 testChar::@1/(byte*) print_char_cursor#34 ) + (byte*) print_char_cursor#146 ← phi( print_sbyte::@2/(byte*) print_char_cursor#141 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#13 testChar::@1/(byte*) print_char_cursor#35 ) (byte) print_byte::b#4 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(byte) print_byte::b#3 ) (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (number) 4 - (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#5 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#5 ← phi( print_byte/(byte) print_byte::b#4 ) - (byte*) print_char_cursor#87 ← phi( print_byte/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#87 + (byte*) print_char_cursor#89 ← phi( print_byte/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#89 (number~) print_byte::$2 ← (byte) print_byte::b#5 & (number) $f - (byte) print_char::ch#5 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#6 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#88 ← phi( print_byte::@1/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#88 + (byte*) print_char_cursor#90 ← phi( print_byte::@1/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#90 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#89 ← phi( print_byte::@2/(byte*) print_char_cursor#22 ) - (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#89 + (byte*) print_char_cursor#91 ← phi( print_byte::@2/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#91 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@2 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 - (byte*) print_char_cursor#90 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#21 print_sbyte::@1/(byte*) print_char_cursor#136 print_sbyte::@3/(byte*) print_char_cursor#137 print_sdword::@2/(byte*) print_char_cursor#142 print_sword::@2/(byte*) print_char_cursor#135 testChar::@2/(byte*) print_char_cursor#35 testChar::@4/(byte*) print_char_cursor#37 testInt::@2/(byte*) print_char_cursor#51 testInt::@4/(byte*) print_char_cursor#53 testLong::@2/(byte*) print_char_cursor#59 testLong::@4/(byte*) print_char_cursor#61 testShort::@2/(byte*) print_char_cursor#43 testShort::@4/(byte*) print_char_cursor#45 ) - (byte) print_char::ch#14 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) print_char::ch#1 print_sbyte::@3/(byte) print_char::ch#2 print_sdword::@2/(byte) print_char::ch#3 print_sword::@2/(byte) print_char::ch#0 testChar::@2/(byte) print_char::ch#6 testChar::@4/(byte) print_char::ch#7 testInt::@2/(byte) print_char::ch#10 testInt::@4/(byte) print_char::ch#11 testLong::@2/(byte) print_char::ch#12 testLong::@4/(byte) print_char::ch#13 testShort::@2/(byte) print_char::ch#8 testShort::@4/(byte) print_char::ch#9 ) - *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14 - (byte*) print_char_cursor#24 ← ++ (byte*) print_char_cursor#90 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 + (byte*) print_char_cursor#92 ← phi( print_byte/(byte*) print_char_cursor#146 print_byte::@1/(byte*) print_char_cursor#22 print_sbyte::@1/(byte*) print_char_cursor#139 print_sbyte::@3/(byte*) print_char_cursor#140 print_sdword::@2/(byte*) print_char_cursor#145 print_sword::@1/(byte*) print_char_cursor#136 print_sword::@3/(byte*) print_char_cursor#137 testChar::@2/(byte*) print_char_cursor#36 testChar::@4/(byte*) print_char_cursor#38 testInt::@2/(byte*) print_char_cursor#52 testInt::@4/(byte*) print_char_cursor#54 testLong::@2/(byte*) print_char_cursor#60 testLong::@4/(byte*) print_char_cursor#62 testShort::@2/(byte*) print_char_cursor#44 testShort::@4/(byte*) print_char_cursor#46 ) + (byte) print_char::ch#15 ← phi( print_byte/(byte) print_char::ch#5 print_byte::@1/(byte) print_char::ch#6 print_sbyte::@1/(byte) print_char::ch#2 print_sbyte::@3/(byte) print_char::ch#3 print_sdword::@2/(byte) print_char::ch#4 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 testChar::@2/(byte) print_char::ch#7 testChar::@4/(byte) print_char::ch#8 testInt::@2/(byte) print_char::ch#11 testInt::@4/(byte) print_char::ch#12 testLong::@2/(byte) print_char::ch#13 testLong::@4/(byte) print_char::ch#14 testShort::@2/(byte) print_char::ch#9 testShort::@4/(byte) print_char::ch#10 ) + *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 + (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#91 ← phi( print_char/(byte*) print_char_cursor#24 ) - (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#91 + (byte*) print_char_cursor#93 ← phi( print_char/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#93 return to:@return print_cls: scope:[print_cls] from main @@ -313,65 +324,65 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#26 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#27 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#92 ← phi( print_cls::@2/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#94 ← phi( print_cls::@2/(byte*) print_char_cursor#27 ) (byte*) print_line_cursor#23 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#23 - (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#92 + (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#94 return to:@return main: scope:[main] from @24 - (byte*) print_char_cursor#144 ← phi( @24/(byte*) print_char_cursor#149 ) + (byte*) print_char_cursor#147 ← phi( @24/(byte*) print_char_cursor#152 ) (byte*) print_line_cursor#40 ← phi( @24/(byte*) print_line_cursor#45 ) (byte*) print_screen#4 ← phi( @24/(byte*) print_screen#5 ) call print_cls to:main::@1 main::@1: scope:[main] from main - (byte*) print_char_cursor#93 ← phi( main/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#95 ← phi( main/(byte*) print_char_cursor#28 ) (byte*) print_line_cursor#24 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#24 - (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#93 + (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#95 call testChar to:main::@2 main::@2: scope:[main] from main::@1 (byte*) print_line_cursor#25 ← phi( main::@1/(byte*) print_line_cursor#12 ) - (byte*) print_char_cursor#94 ← phi( main::@1/(byte*) print_char_cursor#41 ) - (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#94 + (byte*) print_char_cursor#96 ← phi( main::@1/(byte*) print_char_cursor#42 ) + (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#96 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#25 call testShort to:main::@3 main::@3: scope:[main] from main::@2 (byte*) print_line_cursor#26 ← phi( main::@2/(byte*) print_line_cursor#14 ) - (byte*) print_char_cursor#95 ← phi( main::@2/(byte*) print_char_cursor#49 ) - (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#95 + (byte*) print_char_cursor#97 ← phi( main::@2/(byte*) print_char_cursor#50 ) + (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#97 (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#26 call testInt to:main::@4 main::@4: scope:[main] from main::@3 (byte*) print_line_cursor#27 ← phi( main::@3/(byte*) print_line_cursor#16 ) - (byte*) print_char_cursor#96 ← phi( main::@3/(byte*) print_char_cursor#57 ) - (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#96 + (byte*) print_char_cursor#98 ← phi( main::@3/(byte*) print_char_cursor#58 ) + (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#98 (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#27 call testLong to:main::@5 main::@5: scope:[main] from main::@4 (byte*) print_line_cursor#28 ← phi( main::@4/(byte*) print_line_cursor#18 ) - (byte*) print_char_cursor#97 ← phi( main::@4/(byte*) print_char_cursor#65 ) - (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#97 + (byte*) print_char_cursor#99 ← phi( main::@4/(byte*) print_char_cursor#66 ) + (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#99 (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#28 to:main::@return main::@return: scope:[main] from main::@5 - (byte*) print_char_cursor#98 ← phi( main::@5/(byte*) print_char_cursor#32 ) + (byte*) print_char_cursor#100 ← phi( main::@5/(byte*) print_char_cursor#33 ) (byte*) print_line_cursor#29 ← phi( main::@5/(byte*) print_line_cursor#9 ) (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#29 - (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#98 + (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#100 return to:@return testChar: scope:[testChar] from main::@1 (byte*) print_line_cursor#67 ← phi( main::@1/(byte*) print_line_cursor#5 ) - (byte*) print_char_cursor#145 ← phi( main::@1/(byte*) print_char_cursor#28 ) + (byte*) print_char_cursor#148 ← phi( main::@1/(byte*) print_char_cursor#29 ) (byte) testChar::u#0 ← (number) $e (signed byte) testChar::n#0 ← (number) -$e (signed byte) testChar::s#0 ← (number) -$e @@ -380,61 +391,61 @@ testChar: scope:[testChar] from main::@1 to:testChar::@1 testChar::@1: scope:[testChar] from testChar (byte*) print_line_cursor#63 ← phi( testChar/(byte*) print_line_cursor#67 ) - (byte*) print_char_cursor#99 ← phi( testChar/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#99 + (byte*) print_char_cursor#101 ← phi( testChar/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#101 (byte) print_byte::b#3 ← (byte) testChar::u#0 call print_byte to:testChar::@2 testChar::@2: scope:[testChar] from testChar::@1 (byte*) print_line_cursor#59 ← phi( testChar::@1/(byte*) print_line_cursor#63 ) - (byte*) print_char_cursor#100 ← phi( testChar::@1/(byte*) print_char_cursor#23 ) - (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#100 - (byte) print_char::ch#6 ← (byte) ' ' + (byte*) print_char_cursor#102 ← phi( testChar::@1/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#102 + (byte) print_char::ch#7 ← (byte) ' ' call print_char to:testChar::@3 testChar::@3: scope:[testChar] from testChar::@2 (byte*) print_line_cursor#55 ← phi( testChar::@2/(byte*) print_line_cursor#59 ) - (byte*) print_char_cursor#101 ← phi( testChar::@2/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#101 + (byte*) print_char_cursor#103 ← phi( testChar::@2/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#103 (signed byte) print_sbyte::b#1 ← (signed byte) testChar::n#0 call print_sbyte to:testChar::@4 testChar::@4: scope:[testChar] from testChar::@3 (byte*) print_line_cursor#51 ← phi( testChar::@3/(byte*) print_line_cursor#55 ) - (byte*) print_char_cursor#102 ← phi( testChar::@3/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#102 - (byte) print_char::ch#7 ← (byte) ' ' + (byte*) print_char_cursor#104 ← phi( testChar::@3/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#104 + (byte) print_char::ch#8 ← (byte) ' ' call print_char to:testChar::@5 testChar::@5: scope:[testChar] from testChar::@4 (byte*) print_line_cursor#46 ← phi( testChar::@4/(byte*) print_line_cursor#51 ) - (byte*) print_char_cursor#103 ← phi( testChar::@4/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#103 + (byte*) print_char_cursor#105 ← phi( testChar::@4/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#105 (signed byte) print_sbyte::b#2 ← (signed byte) testChar::s#0 call print_sbyte to:testChar::@6 testChar::@6: scope:[testChar] from testChar::@5 (byte*) print_line_cursor#41 ← phi( testChar::@5/(byte*) print_line_cursor#46 ) - (byte*) print_char_cursor#104 ← phi( testChar::@5/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#104 + (byte*) print_char_cursor#106 ← phi( testChar::@5/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#106 call print_ln to:testChar::@7 testChar::@7: scope:[testChar] from testChar::@6 - (byte*) print_char_cursor#105 ← phi( testChar::@6/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#107 ← phi( testChar::@6/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#30 ← phi( testChar::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#30 - (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#105 + (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#107 to:testChar::@return testChar::@return: scope:[testChar] from testChar::@7 (byte*) print_line_cursor#31 ← phi( testChar::@7/(byte*) print_line_cursor#11 ) - (byte*) print_char_cursor#106 ← phi( testChar::@7/(byte*) print_char_cursor#40 ) - (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#106 + (byte*) print_char_cursor#108 ← phi( testChar::@7/(byte*) print_char_cursor#41 ) + (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#108 (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#31 return to:@return testShort: scope:[testShort] from main::@2 (byte*) print_line_cursor#68 ← phi( main::@2/(byte*) print_line_cursor#6 ) - (byte*) print_char_cursor#146 ← phi( main::@2/(byte*) print_char_cursor#29 ) + (byte*) print_char_cursor#149 ← phi( main::@2/(byte*) print_char_cursor#30 ) (word) testShort::u#0 ← (number) $578 (signed word) testShort::n#0 ← (number) -$578 (signed word) testShort::s#0 ← (number) -$578 @@ -443,61 +454,61 @@ testShort: scope:[testShort] from main::@2 to:testShort::@1 testShort::@1: scope:[testShort] from testShort (byte*) print_line_cursor#64 ← phi( testShort/(byte*) print_line_cursor#68 ) - (byte*) print_char_cursor#107 ← phi( testShort/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#107 + (byte*) print_char_cursor#109 ← phi( testShort/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#109 (word) print_word::w#3 ← (word) testShort::u#0 call print_word to:testShort::@2 testShort::@2: scope:[testShort] from testShort::@1 (byte*) print_line_cursor#60 ← phi( testShort::@1/(byte*) print_line_cursor#64 ) - (byte*) print_char_cursor#108 ← phi( testShort::@1/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#108 - (byte) print_char::ch#8 ← (byte) ' ' + (byte*) print_char_cursor#110 ← phi( testShort::@1/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#110 + (byte) print_char::ch#9 ← (byte) ' ' call print_char to:testShort::@3 testShort::@3: scope:[testShort] from testShort::@2 (byte*) print_line_cursor#56 ← phi( testShort::@2/(byte*) print_line_cursor#60 ) - (byte*) print_char_cursor#109 ← phi( testShort::@2/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#109 + (byte*) print_char_cursor#111 ← phi( testShort::@2/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#111 (signed word) print_sword::w#1 ← (signed word) testShort::n#0 call print_sword to:testShort::@4 testShort::@4: scope:[testShort] from testShort::@3 (byte*) print_line_cursor#52 ← phi( testShort::@3/(byte*) print_line_cursor#56 ) - (byte*) print_char_cursor#110 ← phi( testShort::@3/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#110 - (byte) print_char::ch#9 ← (byte) ' ' + (byte*) print_char_cursor#112 ← phi( testShort::@3/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#112 + (byte) print_char::ch#10 ← (byte) ' ' call print_char to:testShort::@5 testShort::@5: scope:[testShort] from testShort::@4 (byte*) print_line_cursor#47 ← phi( testShort::@4/(byte*) print_line_cursor#52 ) - (byte*) print_char_cursor#111 ← phi( testShort::@4/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#111 + (byte*) print_char_cursor#113 ← phi( testShort::@4/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#113 (signed word) print_sword::w#2 ← (signed word) testShort::s#0 call print_sword to:testShort::@6 testShort::@6: scope:[testShort] from testShort::@5 (byte*) print_line_cursor#42 ← phi( testShort::@5/(byte*) print_line_cursor#47 ) - (byte*) print_char_cursor#112 ← phi( testShort::@5/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#112 + (byte*) print_char_cursor#114 ← phi( testShort::@5/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#114 call print_ln to:testShort::@7 testShort::@7: scope:[testShort] from testShort::@6 - (byte*) print_char_cursor#113 ← phi( testShort::@6/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#115 ← phi( testShort::@6/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#32 ← phi( testShort::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#32 - (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#113 + (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#115 to:testShort::@return testShort::@return: scope:[testShort] from testShort::@7 (byte*) print_line_cursor#33 ← phi( testShort::@7/(byte*) print_line_cursor#13 ) - (byte*) print_char_cursor#114 ← phi( testShort::@7/(byte*) print_char_cursor#48 ) - (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#114 + (byte*) print_char_cursor#116 ← phi( testShort::@7/(byte*) print_char_cursor#49 ) + (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#116 (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#33 return to:@return testInt: scope:[testInt] from main::@3 (byte*) print_line_cursor#69 ← phi( main::@3/(byte*) print_line_cursor#7 ) - (byte*) print_char_cursor#147 ← phi( main::@3/(byte*) print_char_cursor#30 ) + (byte*) print_char_cursor#150 ← phi( main::@3/(byte*) print_char_cursor#31 ) (word) testInt::u#0 ← (number) $578 (signed word) testInt::n#0 ← (number) -$578 (signed word) testInt::s#0 ← (number) -$578 @@ -506,61 +517,61 @@ testInt: scope:[testInt] from main::@3 to:testInt::@1 testInt::@1: scope:[testInt] from testInt (byte*) print_line_cursor#65 ← phi( testInt/(byte*) print_line_cursor#69 ) - (byte*) print_char_cursor#115 ← phi( testInt/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#115 + (byte*) print_char_cursor#117 ← phi( testInt/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#117 (word) print_word::w#4 ← (word) testInt::u#0 call print_word to:testInt::@2 testInt::@2: scope:[testInt] from testInt::@1 (byte*) print_line_cursor#61 ← phi( testInt::@1/(byte*) print_line_cursor#65 ) - (byte*) print_char_cursor#116 ← phi( testInt::@1/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#116 - (byte) print_char::ch#10 ← (byte) ' ' + (byte*) print_char_cursor#118 ← phi( testInt::@1/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#118 + (byte) print_char::ch#11 ← (byte) ' ' call print_char to:testInt::@3 testInt::@3: scope:[testInt] from testInt::@2 (byte*) print_line_cursor#57 ← phi( testInt::@2/(byte*) print_line_cursor#61 ) - (byte*) print_char_cursor#117 ← phi( testInt::@2/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#117 + (byte*) print_char_cursor#119 ← phi( testInt::@2/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#119 (signed word) print_sword::w#3 ← (signed word) testInt::n#0 call print_sword to:testInt::@4 testInt::@4: scope:[testInt] from testInt::@3 (byte*) print_line_cursor#53 ← phi( testInt::@3/(byte*) print_line_cursor#57 ) - (byte*) print_char_cursor#118 ← phi( testInt::@3/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#118 - (byte) print_char::ch#11 ← (byte) ' ' + (byte*) print_char_cursor#120 ← phi( testInt::@3/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#120 + (byte) print_char::ch#12 ← (byte) ' ' call print_char to:testInt::@5 testInt::@5: scope:[testInt] from testInt::@4 (byte*) print_line_cursor#48 ← phi( testInt::@4/(byte*) print_line_cursor#53 ) - (byte*) print_char_cursor#119 ← phi( testInt::@4/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#119 + (byte*) print_char_cursor#121 ← phi( testInt::@4/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#121 (signed word) print_sword::w#4 ← (signed word) testInt::s#0 call print_sword to:testInt::@6 testInt::@6: scope:[testInt] from testInt::@5 (byte*) print_line_cursor#43 ← phi( testInt::@5/(byte*) print_line_cursor#48 ) - (byte*) print_char_cursor#120 ← phi( testInt::@5/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#120 + (byte*) print_char_cursor#122 ← phi( testInt::@5/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#122 call print_ln to:testInt::@7 testInt::@7: scope:[testInt] from testInt::@6 - (byte*) print_char_cursor#121 ← phi( testInt::@6/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#123 ← phi( testInt::@6/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#34 ← phi( testInt::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#34 - (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#121 + (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#123 to:testInt::@return testInt::@return: scope:[testInt] from testInt::@7 (byte*) print_line_cursor#35 ← phi( testInt::@7/(byte*) print_line_cursor#15 ) - (byte*) print_char_cursor#122 ← phi( testInt::@7/(byte*) print_char_cursor#56 ) - (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#122 + (byte*) print_char_cursor#124 ← phi( testInt::@7/(byte*) print_char_cursor#57 ) + (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#124 (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#35 return to:@return testLong: scope:[testLong] from main::@4 (byte*) print_line_cursor#70 ← phi( main::@4/(byte*) print_line_cursor#8 ) - (byte*) print_char_cursor#148 ← phi( main::@4/(byte*) print_char_cursor#31 ) + (byte*) print_char_cursor#151 ← phi( main::@4/(byte*) print_char_cursor#32 ) (dword) testLong::u#0 ← (number) $222e0 (signed dword) testLong::n#0 ← (number) -$222e0 (signed dword) testLong::s#0 ← (number) -$222e0 @@ -569,69 +580,69 @@ testLong: scope:[testLong] from main::@4 to:testLong::@1 testLong::@1: scope:[testLong] from testLong (byte*) print_line_cursor#66 ← phi( testLong/(byte*) print_line_cursor#70 ) - (byte*) print_char_cursor#123 ← phi( testLong/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#123 + (byte*) print_char_cursor#125 ← phi( testLong/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#125 (dword) print_dword::dw#1 ← (dword) testLong::u#0 call print_dword to:testLong::@2 testLong::@2: scope:[testLong] from testLong::@1 (byte*) print_line_cursor#62 ← phi( testLong::@1/(byte*) print_line_cursor#66 ) - (byte*) print_char_cursor#124 ← phi( testLong::@1/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#124 - (byte) print_char::ch#12 ← (byte) ' ' + (byte*) print_char_cursor#126 ← phi( testLong::@1/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#126 + (byte) print_char::ch#13 ← (byte) ' ' call print_char to:testLong::@3 testLong::@3: scope:[testLong] from testLong::@2 (byte*) print_line_cursor#58 ← phi( testLong::@2/(byte*) print_line_cursor#62 ) - (byte*) print_char_cursor#125 ← phi( testLong::@2/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#125 + (byte*) print_char_cursor#127 ← phi( testLong::@2/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#127 (signed dword) print_sdword::dw#1 ← (signed dword) testLong::n#0 call print_sdword to:testLong::@4 testLong::@4: scope:[testLong] from testLong::@3 (byte*) print_line_cursor#54 ← phi( testLong::@3/(byte*) print_line_cursor#58 ) - (byte*) print_char_cursor#126 ← phi( testLong::@3/(byte*) print_char_cursor#20 ) - (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#126 - (byte) print_char::ch#13 ← (byte) ' ' + (byte*) print_char_cursor#128 ← phi( testLong::@3/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#128 + (byte) print_char::ch#14 ← (byte) ' ' call print_char to:testLong::@5 testLong::@5: scope:[testLong] from testLong::@4 (byte*) print_line_cursor#49 ← phi( testLong::@4/(byte*) print_line_cursor#54 ) - (byte*) print_char_cursor#127 ← phi( testLong::@4/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#127 + (byte*) print_char_cursor#129 ← phi( testLong::@4/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#129 (signed dword) print_sdword::dw#2 ← (signed dword) testLong::s#0 call print_sdword to:testLong::@6 testLong::@6: scope:[testLong] from testLong::@5 (byte*) print_line_cursor#44 ← phi( testLong::@5/(byte*) print_line_cursor#49 ) - (byte*) print_char_cursor#128 ← phi( testLong::@5/(byte*) print_char_cursor#20 ) - (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#128 + (byte*) print_char_cursor#130 ← phi( testLong::@5/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#130 call print_ln to:testLong::@7 testLong::@7: scope:[testLong] from testLong::@6 - (byte*) print_char_cursor#129 ← phi( testLong::@6/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#131 ← phi( testLong::@6/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#36 ← phi( testLong::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#36 - (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#129 + (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#131 to:testLong::@return testLong::@return: scope:[testLong] from testLong::@7 (byte*) print_line_cursor#37 ← phi( testLong::@7/(byte*) print_line_cursor#17 ) - (byte*) print_char_cursor#130 ← phi( testLong::@7/(byte*) print_char_cursor#64 ) - (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#130 + (byte*) print_char_cursor#132 ← phi( testLong::@7/(byte*) print_char_cursor#65 ) + (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#132 (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#37 return to:@return @24: scope:[] from @12 (byte*) print_screen#5 ← phi( @12/(byte*) print_screen#6 ) - (byte*) print_char_cursor#149 ← phi( @12/(byte*) print_char_cursor#154 ) + (byte*) print_char_cursor#152 ← phi( @12/(byte*) print_char_cursor#157 ) (byte*) print_line_cursor#45 ← phi( @12/(byte*) print_line_cursor#50 ) call main to:@25 @25: scope:[] from @24 - (byte*) print_char_cursor#131 ← phi( @24/(byte*) print_char_cursor#33 ) + (byte*) print_char_cursor#133 ← phi( @24/(byte*) print_char_cursor#34 ) (byte*) print_line_cursor#38 ← phi( @24/(byte*) print_line_cursor#10 ) (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#38 - (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#131 + (byte*) print_char_cursor#67 ← (byte*) print_char_cursor#133 to:@end @end: scope:[] from @25 @@ -672,6 +683,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#12 (byte) print_char::ch#13 (byte) print_char::ch#14 +(byte) print_char::ch#15 (byte) print_char::ch#2 (byte) print_char::ch#3 (byte) print_char::ch#4 @@ -744,6 +756,9 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#152 (byte*) print_char_cursor#153 (byte*) print_char_cursor#154 +(byte*) print_char_cursor#155 +(byte*) print_char_cursor#156 +(byte*) print_char_cursor#157 (byte*) print_char_cursor#16 (byte*) print_char_cursor#17 (byte*) print_char_cursor#18 @@ -1000,17 +1015,19 @@ SYMBOL TABLE SSA (byte*) print_str::str#7 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 (signed word) print_sword::w#1 +(signed word) print_sword::w#10 (signed word) print_sword::w#2 (signed word) print_sword::w#3 (signed word) print_sword::w#4 @@ -1018,6 +1035,7 @@ SYMBOL TABLE SSA (signed word) print_sword::w#6 (signed word) print_sword::w#7 (signed word) print_sword::w#8 +(signed word) print_sword::w#9 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -1119,7 +1137,7 @@ Adding number conversion cast (snumber) -$222e0 in (signed dword) testLong::n#0 Adding number conversion cast (snumber) -$222e0 in (signed dword) testLong::s#0 ← (number) -$222e0 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#6 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#7 Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#5 Inlining cast (dword~) print_sdword::$2 ← (dword)(signed dword) print_sdword::dw#4 Inlining cast (byte) testChar::u#0 ← (unumber)(number) $e @@ -1177,217 +1195,219 @@ Finalized signed number type (signed dword) -$222e0 Finalized signed number type (signed dword) -$222e0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -Inversing boolean not [28] (bool~) print_sword::$1 ← (signed word) print_sword::w#5 >= (signed byte) 0 from [27] (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (signed byte) 0 -Inversing boolean not [100] (bool~) print_sdword::$1 ← (signed dword) print_sdword::dw#3 >= (signed byte) 0 from [99] (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#3 < (signed byte) 0 +Inversing boolean not [104] (bool~) print_sdword::$1 ← (signed dword) print_sdword::dw#3 >= (signed byte) 0 from [103] (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#3 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#50 (byte*) print_char_cursor#154 (byte*) print_screen#6 (byte*) print_line_cursor#45 (byte*) print_char_cursor#149 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#50 (byte*) print_char_cursor#157 (byte*) print_screen#6 (byte*) print_line_cursor#45 (byte*) print_char_cursor#152 (byte*) print_screen#5 Alias (byte*) print_str::str#5 = (byte*) print_str::str#6 -Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#68 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#70 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#71 (byte*) print_char_cursor#73 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#151 -Alias (signed word) print_sword::w#5 = (signed word) print_sword::w#8 (signed word) print_sword::w#7 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#72 +Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#68 (byte*) print_char_cursor#69 (byte*) print_char_cursor#2 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#71 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#154 (byte*) print_char_cursor#137 +Alias (signed word) print_sword::w#10 = (signed word) print_sword::w#8 (signed word) print_sword::w#5 (signed word) print_sword::w#6 (signed word) print_sword::w#9 +Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#72 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#152 (byte*) print_char_cursor#137 +Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#73 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#74 (byte*) print_char_cursor#75 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#155 (byte*) print_char_cursor#140 Alias (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#4 (signed byte) print_sbyte::b#8 (signed byte) print_sbyte::b#7 -Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#76 = (byte*) print_char_cursor#9 Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#75 = (byte*) print_char_cursor#9 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#77 Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#11 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#12 Alias (byte) print_byte::b#1 = (byte~) print_word::$0 Alias (word) print_word::w#5 = (word) print_word::w#6 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#78 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#80 Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#14 +Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#81 (byte*) print_char_cursor#82 (byte*) print_char_cursor#15 Alias (word) print_word::w#1 = (word~) print_dword::$0 Alias (dword) print_dword::dw#2 = (dword) print_dword::dw#3 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#81 +Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#83 Alias (word) print_word::w#2 = (word~) print_dword::$2 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#17 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#18 Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$2 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#86 (byte*) print_char_cursor#20 -Alias (byte*) print_char_cursor#142 = (byte*) print_char_cursor#153 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#86 (byte*) print_char_cursor#88 (byte*) print_char_cursor#21 +Alias (byte*) print_char_cursor#145 = (byte*) print_char_cursor#156 Alias (signed dword) print_sdword::dw#3 = (signed dword) print_sdword::dw#6 (signed dword) print_sdword::dw#5 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#85 +Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#87 Alias (signed dword) print_sdword::dw#0 = (signed dword~) print_sdword::$5 Alias (byte) print_byte::b#4 = (byte) print_byte::b#5 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#87 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#88 (byte*) print_char_cursor#89 (byte*) print_char_cursor#23 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#91 (byte*) print_char_cursor#25 -Alias (byte*) print_line_cursor#23 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#26 (byte*) print_char_cursor#92 (byte*) print_line_cursor#4 (byte*) print_char_cursor#27 +Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#89 +Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#90 (byte*) print_char_cursor#91 (byte*) print_char_cursor#24 +Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#93 (byte*) print_char_cursor#26 +Alias (byte*) print_line_cursor#23 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#27 (byte*) print_char_cursor#94 (byte*) print_line_cursor#4 (byte*) print_char_cursor#28 Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#93 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#94 +Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#95 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#96 Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#95 +Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#97 Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#96 +Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#98 Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#97 (byte*) print_char_cursor#98 (byte*) print_char_cursor#33 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#99 (byte*) print_char_cursor#34 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#63 (byte*) print_line_cursor#67 (byte*) print_line_cursor#59 (byte*) print_line_cursor#55 (byte*) print_line_cursor#51 (byte*) print_line_cursor#46 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#99 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#35 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#36 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#37 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#35 +Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#37 +Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#38 +Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#40 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31 (byte*) print_line_cursor#12 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#106 (byte*) print_char_cursor#41 +Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#41 (byte*) print_char_cursor#108 (byte*) print_char_cursor#42 Alias (byte*) print_line_cursor#42 = (byte*) print_line_cursor#64 (byte*) print_line_cursor#68 (byte*) print_line_cursor#60 (byte*) print_line_cursor#56 (byte*) print_line_cursor#52 (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#43 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#44 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#45 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#46 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#47 +Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#43 +Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#44 +Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#45 +Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#46 +Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#47 +Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#48 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#33 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#114 (byte*) print_char_cursor#49 +Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#116 (byte*) print_char_cursor#50 Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#69 (byte*) print_line_cursor#61 (byte*) print_line_cursor#57 (byte*) print_line_cursor#53 (byte*) print_line_cursor#48 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#55 +Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#51 +Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#52 +Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#53 +Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#54 +Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#55 +Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#56 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#122 (byte*) print_char_cursor#57 +Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#57 (byte*) print_char_cursor#124 (byte*) print_char_cursor#58 Alias (byte*) print_line_cursor#44 = (byte*) print_line_cursor#66 (byte*) print_line_cursor#70 (byte*) print_line_cursor#62 (byte*) print_line_cursor#58 (byte*) print_line_cursor#54 (byte*) print_line_cursor#49 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#58 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#62 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#59 +Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#60 +Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#61 +Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#62 +Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#64 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#18 -Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#130 (byte*) print_char_cursor#65 +Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#132 (byte*) print_char_cursor#66 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#38 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#66 +Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#67 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#69 +Self Phi Eliminated (byte*) print_char_cursor#70 Self Phi Eliminated (byte*) print_line_cursor#23 Successful SSA optimization Pass2SelfPhiElimination -Identical Phi Values (byte*) print_char_cursor#69 (byte*) print_char_cursor#133 -Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#74 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#75 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#22 -Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#22 -Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#22 -Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#70 (byte*) print_char_cursor#135 +Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#76 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#25 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#23 (byte*) print_screen#1 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#40 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#147 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#24 (byte*) print_line_cursor#23 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_line_cursor#23 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#105 +Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_line_cursor#23 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#107 Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_line_cursor#11 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#113 +Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#115 Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#13 -Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#121 +Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#123 Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#15 -Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#129 +Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#131 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#17 -Identical Phi Values (byte*) print_char_cursor#145 (byte*) print_char_cursor#28 +Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#29 Identical Phi Values (byte*) print_line_cursor#41 (byte*) print_line_cursor#24 -Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#22 -Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#10 +Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#11 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#29 +Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#149 (byte*) print_char_cursor#30 Identical Phi Values (byte*) print_line_cursor#42 (byte*) print_line_cursor#25 -Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#5 +Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#7 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#147 (byte*) print_char_cursor#30 +Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_char_cursor#31 Identical Phi Values (byte*) print_line_cursor#43 (byte*) print_line_cursor#26 -Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#5 +Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#7 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#31 +Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#151 (byte*) print_char_cursor#32 Identical Phi Values (byte*) print_line_cursor#44 (byte*) print_line_cursor#27 -Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#130 (byte*) print_char_cursor#19 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#10 -Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#32 +Identical Phi Values (byte*) print_char_cursor#133 (byte*) print_char_cursor#100 Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#133 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#135 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#142 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#135 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#139 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#145 (byte*) print_char_cursor#25 Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#134 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_char_cursor#25 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [29] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_sbyte::$0 [48] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -Simple Condition (bool~) print_sdword::$1 [101] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 -Simple Condition (bool~) print_cls::$1 [147] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [28] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_sbyte::$0 [52] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 +Simple Condition (bool~) print_sdword::$1 [105] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 +Simple Condition (bool~) print_cls::$1 [151] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const byte) print_char::ch#1 = '-' -Constant (const byte) print_char::ch#2 = ' ' -Constant (const byte) print_char::ch#3 = '-' +Constant (const byte) print_char::ch#1 = ' ' +Constant (const byte) print_char::ch#2 = '-' +Constant (const byte) print_char::ch#3 = ' ' +Constant (const byte) print_char::ch#4 = '-' Constant (const byte[]) print_hextab#0 = $0 Constant (const byte) testChar::u#0 = $e Constant (const signed byte) testChar::n#0 = -$e Constant (const signed byte) testChar::s#0 = -$e Constant (const byte*) print_str::str#1 = testChar::str -Constant (const byte) print_char::ch#6 = ' ' Constant (const byte) print_char::ch#7 = ' ' +Constant (const byte) print_char::ch#8 = ' ' Constant (const word) testShort::u#0 = $578 Constant (const signed word) testShort::n#0 = -$578 Constant (const signed word) testShort::s#0 = -$578 Constant (const byte*) print_str::str#2 = testShort::str -Constant (const byte) print_char::ch#8 = ' ' Constant (const byte) print_char::ch#9 = ' ' +Constant (const byte) print_char::ch#10 = ' ' Constant (const word) testInt::u#0 = $578 Constant (const signed word) testInt::n#0 = -$578 Constant (const signed word) testInt::s#0 = -$578 Constant (const byte*) print_str::str#3 = testInt::str -Constant (const byte) print_char::ch#10 = ' ' Constant (const byte) print_char::ch#11 = ' ' +Constant (const byte) print_char::ch#12 = ' ' Constant (const dword) testLong::u#0 = $222e0 Constant (const signed dword) testLong::n#0 = -$222e0 Constant (const signed dword) testLong::s#0 = -$222e0 Constant (const byte*) print_str::str#4 = testLong::str -Constant (const byte) print_char::ch#12 = ' ' Constant (const byte) print_char::ch#13 = ' ' +Constant (const byte) print_char::ch#14 = ' ' Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte) print_byte::b#3 = testChar::u#0 @@ -1403,7 +1423,7 @@ Constant (const dword) print_dword::dw#1 = testLong::u#0 Constant (const signed dword) print_sdword::dw#1 = testLong::n#0 Constant (const signed dword) print_sdword::dw#2 = testLong::s#0 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [64] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [65] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Successful SSA optimization Pass2ConstantIdentification @@ -1427,7 +1447,7 @@ Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte) print_char::ch#2 Inlining constant with var siblings (const byte) print_char::ch#3 -Inlining constant with var siblings (const byte) print_char::ch#6 +Inlining constant with var siblings (const byte) print_char::ch#4 Inlining constant with var siblings (const byte) print_char::ch#7 Inlining constant with var siblings (const byte) print_char::ch#8 Inlining constant with var siblings (const byte) print_char::ch#9 @@ -1435,10 +1455,12 @@ Inlining constant with var siblings (const byte) print_char::ch#10 Inlining constant with var siblings (const byte) print_char::ch#11 Inlining constant with var siblings (const byte) print_char::ch#12 Inlining constant with var siblings (const byte) print_char::ch#13 +Inlining constant with var siblings (const byte) print_char::ch#14 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_line_cursor#0 Constant inlined print_cls::$0 = (byte*) 1024+(word) $3e8 Constant inlined print_char::ch#13 = (byte) ' ' +Constant inlined print_char::ch#14 = (byte) ' ' Constant inlined print_sbyte::b#1 = (const signed byte) testChar::n#0 Constant inlined print_sbyte::b#2 = (const signed byte) testChar::s#0 Constant inlined print_char::ch#10 = (byte) ' ' @@ -1451,7 +1473,6 @@ Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined print_char::ch#7 = (byte) ' ' Constant inlined print_sword::w#4 = (const signed word) testInt::s#0 Constant inlined print_dword::dw#1 = (const dword) testLong::u#0 -Constant inlined print_char::ch#6 = (byte) ' ' Constant inlined print_char::ch#9 = (byte) ' ' Constant inlined print_char::ch#8 = (byte) ' ' Constant inlined print_sdword::dw#2 = (const signed dword) testLong::s#0 @@ -1461,9 +1482,10 @@ Constant inlined print_byte::b#3 = (const byte) testChar::u#0 Constant inlined print_word::w#3 = (const word) testShort::u#0 Constant inlined print_cls::sc#0 = (byte*) 1024 Constant inlined print_word::w#4 = (const word) testInt::u#0 -Constant inlined print_char::ch#3 = (byte) '-' -Constant inlined print_char::ch#2 = (byte) ' ' -Constant inlined print_char::ch#1 = (byte) '-' +Constant inlined print_char::ch#3 = (byte) ' ' +Constant inlined print_char::ch#2 = (byte) '-' +Constant inlined print_char::ch#4 = (byte) '-' +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' Constant inlined print_str::str#4 = (const string) testLong::str Constant inlined print_str::str#3 = (const string) testInt::str @@ -1471,7 +1493,6 @@ Constant inlined print_str::str#2 = (const string) testShort::str Constant inlined print_str::str#1 = (const string) testChar::str Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_sdword::@5(between print_sdword and print_sdword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Adding NOP phi() at start of @begin @@ -1496,7 +1517,7 @@ Adding NOP phi() at start of print_byte::@2 Adding NOP phi() at start of testInt::@3 Adding NOP phi() at start of testInt::@5 Adding NOP phi() at start of testInt::@7 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of testShort::@3 Adding NOP phi() at start of testShort::@5 Adding NOP phi() at start of testShort::@7 @@ -1517,65 +1538,66 @@ Calls in [print_dword] to print_word:60 print_word:64 Calls in [print_word] to print_byte:71 print_byte:75 Calls in [print_byte] to print_char:83 print_char:88 Calls in [testInt] to print_str:107 print_word:109 print_char:111 print_sword:113 print_char:115 print_sword:117 print_ln:119 -Calls in [print_sword] to print_char:125 print_word:132 -Calls in [testShort] to print_str:137 print_word:139 print_char:141 print_sword:143 print_char:145 print_sword:147 print_ln:149 -Calls in [testChar] to print_str:153 print_byte:155 print_char:157 print_sbyte:159 print_char:161 print_sbyte:163 print_ln:165 -Calls in [print_sbyte] to print_char:171 print_byte:177 print_char:181 +Calls in [print_sword] to print_char:125 print_word:131 print_char:135 +Calls in [testShort] to print_str:139 print_word:141 print_char:143 print_sword:145 print_char:147 print_sword:149 print_ln:151 +Calls in [testChar] to print_str:155 print_byte:157 print_char:159 print_sbyte:161 print_char:163 print_sbyte:165 print_ln:167 +Calls in [print_sbyte] to print_char:173 print_byte:179 print_char:183 Created 21 initial phi equivalence classes -Not coalescing [18] print_char_cursor#156 ← print_line_cursor#1 -Coalesced [20] print_char_cursor#166 ← print_char_cursor#132 -Coalesced [22] print_char_cursor#181 ← print_char_cursor#24 -Coalesced (already) [26] print_char_cursor#182 ← print_char_cursor#24 +Not coalescing [18] print_char_cursor#159 ← print_line_cursor#1 +Coalesced [20] print_char_cursor#169 ← print_char_cursor#134 +Coalesced [22] print_char_cursor#185 ← print_char_cursor#25 +Coalesced (already) [26] print_char_cursor#186 ← print_char_cursor#25 Coalesced [30] print_line_cursor#72 ← print_line_cursor#1 Coalesced [35] print_line_cursor#74 ← print_line_cursor#39 Coalesced (already) [41] print_line_cursor#75 ← print_line_cursor#1 -Coalesced (already) [44] print_char_cursor#175 ← print_char_cursor#24 +Coalesced (already) [44] print_char_cursor#178 ← print_char_cursor#25 Coalesced [47] print_sdword::dw#8 ← print_sdword::dw#0 Coalesced [50] print_dword::dw#4 ← print_dword::dw#0 -Coalesced [51] print_char_cursor#165 ← print_char_cursor#24 +Coalesced [51] print_char_cursor#168 ← print_char_cursor#25 Coalesced [55] print_sdword::dw#7 ← print_sdword::dw#3 Coalesced [58] print_word::w#7 ← print_word::w#1 -Coalesced [59] print_char_cursor#160 ← print_char_cursor#140 +Coalesced [59] print_char_cursor#163 ← print_char_cursor#143 Coalesced [62] print_word::w#8 ← print_word::w#2 -Coalesced (already) [63] print_char_cursor#161 ← print_char_cursor#24 +Coalesced (already) [63] print_char_cursor#164 ← print_char_cursor#25 Coalesced [69] print_byte::b#7 ← print_byte::b#1 -Coalesced [70] print_char_cursor#168 ← print_char_cursor#139 +Coalesced [70] print_char_cursor#171 ← print_char_cursor#142 Coalesced [73] print_byte::b#8 ← print_byte::b#2 -Coalesced (already) [74] print_char_cursor#169 ← print_char_cursor#24 -Coalesced [81] print_char::ch#15 ← print_char::ch#4 -Coalesced (already) [82] print_char_cursor#171 ← print_char_cursor#143 -Coalesced [86] print_char::ch#16 ← print_char::ch#5 -Coalesced (already) [87] print_char_cursor#172 ← print_char_cursor#24 +Coalesced (already) [74] print_char_cursor#172 ← print_char_cursor#25 +Coalesced [81] print_char::ch#16 ← print_char::ch#5 +Coalesced (already) [82] print_char_cursor#174 ← print_char_cursor#146 +Coalesced [86] print_char::ch#17 ← print_char::ch#6 +Coalesced (already) [87] print_char_cursor#175 ← print_char_cursor#25 Coalesced [96] print_str::str#8 ← print_str::str#7 -Coalesced [97] print_char_cursor#158 ← print_char_cursor#150 +Coalesced [97] print_char_cursor#161 ← print_char_cursor#153 Coalesced [104] print_str::str#9 ← print_str::str#0 -Coalesced [105] print_char_cursor#159 ← print_char_cursor#1 -Not coalescing [106] print_char_cursor#155 ← print_line_cursor#1 -Coalesced (already) [108] print_char_cursor#163 ← print_char_cursor#132 -Coalesced (already) [110] print_char_cursor#179 ← print_char_cursor#24 -Coalesced (already) [114] print_char_cursor#180 ← print_char_cursor#24 +Coalesced [105] print_char_cursor#162 ← print_char_cursor#1 +Not coalescing [106] print_char_cursor#158 ← print_line_cursor#1 +Coalesced (already) [108] print_char_cursor#166 ← print_char_cursor#134 +Coalesced (already) [110] print_char_cursor#183 ← print_char_cursor#25 +Coalesced (already) [114] print_char_cursor#184 ← print_char_cursor#25 Coalesced (already) [118] print_line_cursor#71 ← print_line_cursor#1 -Coalesced (already) [124] print_char_cursor#176 ← print_char_cursor#24 -Coalesced [127] print_sword::w#10 ← print_sword::w#0 -Coalesced [130] print_word::w#9 ← print_word::w#0 -Coalesced (already) [131] print_char_cursor#162 ← print_char_cursor#24 -Coalesced [135] print_sword::w#9 ← print_sword::w#5 -Not coalescing [136] print_char_cursor#157 ← print_line_cursor#1 -Coalesced (already) [138] print_char_cursor#164 ← print_char_cursor#132 -Coalesced (already) [140] print_char_cursor#183 ← print_char_cursor#24 -Coalesced (already) [144] print_char_cursor#184 ← print_char_cursor#24 -Coalesced (already) [148] print_line_cursor#73 ← print_line_cursor#1 -Coalesced (already) [154] print_char_cursor#170 ← print_char_cursor#132 -Coalesced (already) [156] print_char_cursor#177 ← print_char_cursor#24 -Coalesced (already) [160] print_char_cursor#178 ← print_char_cursor#24 -Coalesced (already) [170] print_char_cursor#174 ← print_char_cursor#24 -Coalesced [172] print_sbyte::b#10 ← print_sbyte::b#3 -Coalesced [175] print_byte::b#6 ← print_byte::b#0 -Coalesced (already) [176] print_char_cursor#167 ← print_char_cursor#24 -Coalesced (already) [180] print_char_cursor#173 ← print_char_cursor#24 -Coalesced [183] print_sbyte::b#9 ← print_sbyte::b#0 -Coalesced [191] print_cls::sc#3 ← print_cls::sc#1 +Coalesced (already) [124] print_char_cursor#180 ← print_char_cursor#25 +Coalesced [126] print_sword::w#12 ← print_sword::w#10 +Coalesced [129] print_word::w#9 ← print_word::w#0 +Coalesced (already) [130] print_char_cursor#165 ← print_char_cursor#25 +Coalesced (already) [134] print_char_cursor#179 ← print_char_cursor#25 +Coalesced [137] print_sword::w#11 ← print_sword::w#0 +Not coalescing [138] print_char_cursor#160 ← print_line_cursor#1 +Coalesced (already) [140] print_char_cursor#167 ← print_char_cursor#134 +Coalesced (already) [142] print_char_cursor#187 ← print_char_cursor#25 +Coalesced (already) [146] print_char_cursor#188 ← print_char_cursor#25 +Coalesced (already) [150] print_line_cursor#73 ← print_line_cursor#1 +Coalesced (already) [156] print_char_cursor#173 ← print_char_cursor#134 +Coalesced (already) [158] print_char_cursor#181 ← print_char_cursor#25 +Coalesced (already) [162] print_char_cursor#182 ← print_char_cursor#25 +Coalesced (already) [172] print_char_cursor#177 ← print_char_cursor#25 +Coalesced [174] print_sbyte::b#10 ← print_sbyte::b#3 +Coalesced [177] print_byte::b#6 ← print_byte::b#0 +Coalesced (already) [178] print_char_cursor#170 ← print_char_cursor#25 +Coalesced (already) [182] print_char_cursor#176 ← print_char_cursor#25 +Coalesced [185] print_sbyte::b#9 ← print_sbyte::b#0 +Coalesced [193] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 11 phi equivalence classes Culled Empty Block (label) @12 Culled Empty Block (label) @25 @@ -1589,8 +1611,8 @@ Culled Empty Block (label) print_dword::@2 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) testInt::@7 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) testShort::@7 Culled Empty Block (label) testChar::@7 Culled Empty Block (label) print_sbyte::@6 @@ -1598,7 +1620,7 @@ Culled Empty Block (label) print_sbyte::@7 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @24 to @1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block print_sbyte::@5 to print_sbyte::@4 Renumbering block print_sdword::@4 to print_sdword::@3 Adding NOP phi() at start of @begin @@ -1622,7 +1644,8 @@ Adding NOP phi() at start of testInt::@3 Adding NOP phi() at start of testInt::@4 Adding NOP phi() at start of testInt::@5 Adding NOP phi() at start of testInt::@6 -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of testShort::@1 Adding NOP phi() at start of testShort::@2 Adding NOP phi() at start of testShort::@3 @@ -1674,7 +1697,7 @@ main::@return: scope:[main] from main::@4 [14] return to:@return testLong: scope:[testLong] from main::@4 - [15] (byte*~) print_char_cursor#156 ← (byte*) print_line_cursor#1 + [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [16] call print_str to:testLong::@1 testLong::@1: scope:[testLong] from testLong @@ -1710,7 +1733,7 @@ print_ln: scope:[print_ln] from testChar::@6 testInt::@6 testLong::@6 testShort print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [31] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 - [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1 + [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [34] return @@ -1735,7 +1758,7 @@ print_sdword::@return: scope:[print_sdword] from print_sdword::@1 [43] return to:@return print_dword: scope:[print_dword] from print_sdword::@1 testLong::@1 - [44] (byte*) print_char_cursor#140 ← phi( print_sdword::@1/(byte*) print_char_cursor#24 testLong::@1/(byte*) print_char_cursor#132 ) + [44] (byte*) print_char_cursor#143 ← phi( print_sdword::@1/(byte*) print_char_cursor#25 testLong::@1/(byte*) print_char_cursor#134 ) [44] (dword) print_dword::dw#2 ← phi( print_sdword::@1/(dword) print_dword::dw#0 testLong::@1/(const dword) testLong::u#0 ) [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [46] call print_word @@ -1747,9 +1770,9 @@ print_dword::@1: scope:[print_dword] from print_dword print_dword::@return: scope:[print_dword] from print_dword::@1 [49] return to:@return -print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@1 testInt::@1 testShort::@1 - [50] (byte*) print_char_cursor#139 ← phi( print_dword/(byte*) print_char_cursor#140 print_dword::@1/(byte*) print_char_cursor#24 print_sword::@1/(byte*) print_char_cursor#24 testInt::@1/(byte*) print_char_cursor#132 testShort::@1/(byte*) print_char_cursor#132 ) - [50] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 ) +print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1 + [50] (byte*) print_char_cursor#142 ← phi( print_dword/(byte*) print_char_cursor#143 print_dword::@1/(byte*) print_char_cursor#25 print_sword::@2/(byte*) print_char_cursor#25 testInt::@1/(byte*) print_char_cursor#134 testShort::@1/(byte*) print_char_cursor#134 ) + [50] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 ) [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 [52] call print_byte to:print_word::@1 @@ -1761,35 +1784,35 @@ print_word::@return: scope:[print_word] from print_word::@1 [55] return to:@return print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1 - [56] (byte*) print_char_cursor#143 ← phi( print_sbyte::@2/(byte*) print_char_cursor#24 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#24 testChar::@1/(byte*) print_char_cursor#132 ) + [56] (byte*) print_char_cursor#146 ← phi( print_sbyte::@2/(byte*) print_char_cursor#25 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#25 testChar::@1/(byte*) print_char_cursor#134 ) [56] (byte) print_byte::b#4 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(const byte) testChar::u#0 ) [57] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte) 4 - [58] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [59] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f - [61] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [62] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 [63] return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@2 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 - [64] (byte*) print_char_cursor#90 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#24 print_sbyte::@1/(byte*) print_char_cursor#24 print_sbyte::@3/(byte*) print_char_cursor#24 print_sdword::@2/(byte*) print_char_cursor#24 print_sword::@2/(byte*) print_char_cursor#24 testChar::@2/(byte*) print_char_cursor#24 testChar::@4/(byte*) print_char_cursor#24 testInt::@2/(byte*) print_char_cursor#24 testInt::@4/(byte*) print_char_cursor#24 testLong::@2/(byte*) print_char_cursor#24 testLong::@4/(byte*) print_char_cursor#24 testShort::@2/(byte*) print_char_cursor#24 testShort::@4/(byte*) print_char_cursor#24 ) - [64] (byte) print_char::ch#14 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sdword::@2/(byte) '-' print_sword::@2/(byte) '-' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' ) - [65] *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14 - [66] (byte*) print_char_cursor#24 ← ++ (byte*) print_char_cursor#90 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 + [64] (byte*) print_char_cursor#92 ← phi( print_byte/(byte*) print_char_cursor#146 print_byte::@1/(byte*) print_char_cursor#25 print_sbyte::@1/(byte*) print_char_cursor#25 print_sbyte::@3/(byte*) print_char_cursor#25 print_sdword::@2/(byte*) print_char_cursor#25 print_sword::@1/(byte*) print_char_cursor#25 print_sword::@3/(byte*) print_char_cursor#25 testChar::@2/(byte*) print_char_cursor#25 testChar::@4/(byte*) print_char_cursor#25 testInt::@2/(byte*) print_char_cursor#25 testInt::@4/(byte*) print_char_cursor#25 testLong::@2/(byte*) print_char_cursor#25 testLong::@4/(byte*) print_char_cursor#25 testShort::@2/(byte*) print_char_cursor#25 testShort::@4/(byte*) print_char_cursor#25 ) + [64] (byte) print_char::ch#15 ← phi( print_byte/(byte) print_char::ch#5 print_byte::@1/(byte) print_char::ch#6 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' ) + [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 + [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 to:print_char::@return print_char::@return: scope:[print_char] from print_char [67] return to:@return print_str: scope:[print_str] from testChar testInt testLong testShort - [68] (byte*) print_char_cursor#150 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#155 testLong/(byte*~) print_char_cursor#156 testShort/(byte*~) print_char_cursor#157 ) + [68] (byte*) print_char_cursor#153 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#158 testLong/(byte*~) print_char_cursor#159 testShort/(byte*~) print_char_cursor#160 ) [68] (byte*) print_str::str#7 ← phi( testChar/(const string) testChar::str testInt/(const string) testInt::str testLong/(const string) testLong::str testShort/(const string) testShort::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [69] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#150 print_str::@2/(byte*) print_char_cursor#1 ) + [69] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#153 print_str::@2/(byte*) print_char_cursor#1 ) [69] (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 ) [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -1797,12 +1820,12 @@ print_str::@return: scope:[print_str] from print_str::@1 [71] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [72] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#5) - [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 + [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) + [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 [74] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 to:print_str::@1 testInt: scope:[testInt] from main::@3 - [75] (byte*~) print_char_cursor#155 ← (byte*) print_line_cursor#1 + [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 [76] call print_str to:testInt::@1 testInt::@1: scope:[testInt] from testInt @@ -1833,120 +1856,124 @@ testInt::@return: scope:[testInt] from testInt::@6 [89] return to:@return print_sword: scope:[print_sword] from testInt::@3 testInt::@5 testShort::@3 testShort::@5 - [90] (signed word) print_sword::w#5 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 ) - [91] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [90] (signed word) print_sword::w#10 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 ) + [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [92] phi() [93] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [95] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 ) - [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 - [97] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [94] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 ) + [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + [96] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [98] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [97] return to:@return +print_sword::@1: scope:[print_sword] from print_sword + [98] phi() + [99] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 + to:print_sword::@2 testShort: scope:[testShort] from main::@2 - [99] (byte*~) print_char_cursor#157 ← (byte*) print_line_cursor#1 - [100] call print_str + [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 + [102] call print_str to:testShort::@1 testShort::@1: scope:[testShort] from testShort - [101] phi() - [102] call print_word + [103] phi() + [104] call print_word to:testShort::@2 testShort::@2: scope:[testShort] from testShort::@1 - [103] phi() - [104] call print_char + [105] phi() + [106] call print_char to:testShort::@3 testShort::@3: scope:[testShort] from testShort::@2 - [105] phi() - [106] call print_sword + [107] phi() + [108] call print_sword to:testShort::@4 testShort::@4: scope:[testShort] from testShort::@3 - [107] phi() - [108] call print_char + [109] phi() + [110] call print_char to:testShort::@5 testShort::@5: scope:[testShort] from testShort::@4 - [109] phi() - [110] call print_sword + [111] phi() + [112] call print_sword to:testShort::@6 testShort::@6: scope:[testShort] from testShort::@5 - [111] phi() - [112] call print_ln + [113] phi() + [114] call print_ln to:testShort::@return testShort::@return: scope:[testShort] from testShort::@6 - [113] return + [115] return to:@return testChar: scope:[testChar] from main::@1 - [114] phi() - [115] call print_str + [116] phi() + [117] call print_str to:testChar::@1 testChar::@1: scope:[testChar] from testChar - [116] phi() - [117] call print_byte + [118] phi() + [119] call print_byte to:testChar::@2 testChar::@2: scope:[testChar] from testChar::@1 - [118] phi() - [119] call print_char + [120] phi() + [121] call print_char to:testChar::@3 testChar::@3: scope:[testChar] from testChar::@2 - [120] phi() - [121] call print_sbyte + [122] phi() + [123] call print_sbyte to:testChar::@4 testChar::@4: scope:[testChar] from testChar::@3 - [122] phi() - [123] call print_char + [124] phi() + [125] call print_char to:testChar::@5 testChar::@5: scope:[testChar] from testChar::@4 - [124] phi() - [125] call print_sbyte + [126] phi() + [127] call print_sbyte to:testChar::@6 testChar::@6: scope:[testChar] from testChar::@5 - [126] phi() - [127] call print_ln + [128] phi() + [129] call print_ln to:testChar::@return testChar::@return: scope:[testChar] from testChar::@6 - [128] return + [130] return to:@return print_sbyte: scope:[print_sbyte] from testChar::@3 testChar::@5 - [129] (signed byte) print_sbyte::b#3 ← phi( testChar::@3/(const signed byte) testChar::n#0 testChar::@5/(const signed byte) testChar::s#0 ) - [130] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 + [131] (signed byte) print_sbyte::b#3 ← phi( testChar::@3/(const signed byte) testChar::n#0 testChar::@5/(const signed byte) testChar::s#0 ) + [132] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [131] phi() - [132] call print_char + [133] phi() + [134] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [133] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 ) - [134] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 - [135] call print_byte + [135] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 ) + [136] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 + [137] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [136] return + [138] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [137] phi() - [138] call print_char + [139] phi() + [140] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [139] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 + [141] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 to:print_sbyte::@2 print_cls: scope:[print_cls] from main - [140] phi() + [142] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [141] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [142] *((byte*) print_cls::sc#2) ← (byte) ' ' - [143] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [144] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [143] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [144] *((byte*) print_cls::sc#2) ← (byte) ' ' + [145] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [146] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [145] return + [147] return to:@return @@ -1962,21 +1989,21 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#4 2.5 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#14 6.0 -(byte) print_char::ch#4 4.0 +(byte) print_char::ch#15 6.0 (byte) print_char::ch#5 4.0 +(byte) print_char::ch#6 4.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#132 3.583333333333333 -(byte*) print_char_cursor#139 6.0 -(byte*) print_char_cursor#140 3.0 -(byte*) print_char_cursor#143 3.333333333333333 -(byte*) print_char_cursor#150 8.0 -(byte*~) print_char_cursor#155 4.0 -(byte*~) print_char_cursor#156 4.0 -(byte*~) print_char_cursor#157 4.0 -(byte*) print_char_cursor#24 0.5568181818181817 -(byte*) print_char_cursor#90 16.0 +(byte*) print_char_cursor#134 3.583333333333333 +(byte*) print_char_cursor#142 6.0 +(byte*) print_char_cursor#143 3.0 +(byte*) print_char_cursor#146 3.333333333333333 +(byte*) print_char_cursor#153 8.0 +(byte*~) print_char_cursor#158 4.0 +(byte*~) print_char_cursor#159 4.0 +(byte*~) print_char_cursor#160 4.0 +(byte*) print_char_cursor#25 0.5666666666666664 +(byte*) print_char_cursor#92 17.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -2010,8 +2037,8 @@ VARIABLE REGISTER WEIGHTS (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w (signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#5 1.5 -(signed word) print_sword::w#6 4.0 +(signed word) print_sword::w#10 1.0 +(signed word) print_sword::w#7 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 4.0 @@ -2041,10 +2068,10 @@ Initial phi equivalence classes [ print_dword::dw#2 print_dword::dw#0 ] [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -[ print_char::ch#14 print_char::ch#4 print_char::ch#5 ] -[ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] +[ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] +[ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] [ print_str::str#5 print_str::str#7 print_str::str#0 ] -[ print_sword::w#6 print_sword::w#5 print_sword::w#0 ] +[ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] [ print_cls::sc#2 print_cls::sc#1 ] Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] @@ -2055,10 +2082,10 @@ Complete equivalence classes [ print_dword::dw#2 print_dword::dw#0 ] [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -[ print_char::ch#14 print_char::ch#4 print_char::ch#5 ] -[ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] +[ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] +[ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] [ print_str::str#5 print_str::str#7 print_str::str#0 ] -[ print_sword::w#6 print_sword::w#5 print_sword::w#0 ] +[ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] [ print_cls::sc#2 print_cls::sc#1 ] [ print_byte::$0 ] @@ -2068,10 +2095,10 @@ Allocated zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw Allocated zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] Allocated zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] Allocated zp ZP_BYTE:14 [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -Allocated zp ZP_BYTE:15 [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ] -Allocated zp ZP_WORD:16 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] +Allocated zp ZP_BYTE:15 [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] +Allocated zp ZP_WORD:16 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] Allocated zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] -Allocated zp ZP_WORD:20 [ print_sword::w#6 print_sword::w#5 print_sword::w#0 ] +Allocated zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] Allocated zp ZP_BYTE:22 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] Allocated zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_BYTE:25 [ print_byte::$0 ] @@ -2106,7 +2133,7 @@ bend: //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [140] phi from main to print_cls [phi:main->print_cls] + //SEG12 [142] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -2115,7 +2142,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call testChar - //SEG16 [114] phi from main::@1 to testChar [phi:main::@1->testChar] + //SEG16 [116] phi from main::@1 to testChar [phi:main::@1->testChar] testChar_from_b1: jsr testChar //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -2150,7 +2177,7 @@ testLong: { .const u = $222e0 .const n = -$222e0 .const s = -$222e0 - //SEG29 [15] (byte*~) print_char_cursor#156 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG29 [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -2158,7 +2185,7 @@ testLong: { //SEG30 [16] call print_str //SEG31 [68] phi from testLong to print_str [phi:testLong->print_str] print_str_from_testLong: - //SEG32 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#156 [phi:testLong->print_str#0] -- register_copy + //SEG32 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#159 [phi:testLong->print_str#0] -- register_copy //SEG33 [68] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 lda #print_dword] print_dword_from_b1: - //SEG38 [44] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:testLong::@1->print_dword#0] -- register_copy + //SEG38 [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:testLong::@1->print_dword#0] -- register_copy //SEG39 [44] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 lda #print_char] print_char_from_b2: - //SEG44 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testLong::@2->print_char#0] -- register_copy - //SEG45 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuz1=vbuc1 + //SEG44 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@2->print_char#0] -- register_copy + //SEG45 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char @@ -2223,8 +2250,8 @@ testLong: { //SEG53 [24] call print_char //SEG54 [64] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] print_char_from_b4: - //SEG55 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testLong::@4->print_char#0] -- register_copy - //SEG56 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuz1=vbuc1 + //SEG55 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@4->print_char#0] -- register_copy + //SEG56 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char @@ -2281,7 +2308,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG74 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG74 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -2312,8 +2339,8 @@ print_sdword: { //SEG81 [38] call print_char //SEG82 [64] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] print_char_from_b2: - //SEG83 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG84 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG83 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG84 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char @@ -2357,7 +2384,7 @@ print_sdword: { //SEG91 [42] call print_dword //SEG92 [44] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] print_dword_from_b1: - //SEG93 [44] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#24 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG93 [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#25 [phi:print_sdword::@1->print_dword#0] -- register_copy //SEG94 [44] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword jmp breturn @@ -2379,7 +2406,7 @@ print_dword: { //SEG99 [46] call print_word //SEG100 [50] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG101 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#140 [phi:print_dword->print_word#0] -- register_copy + //SEG101 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#143 [phi:print_dword->print_word#0] -- register_copy //SEG102 [50] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 @@ -2393,7 +2420,7 @@ print_dword: { //SEG105 [48] call print_word //SEG106 [50] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG107 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#24 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG107 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_dword::@1->print_word#0] -- register_copy //SEG108 [50] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn @@ -2413,7 +2440,7 @@ print_word: { //SEG113 [52] call print_byte //SEG114 [56] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG115 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy + //SEG115 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy //SEG116 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 @@ -2425,7 +2452,7 @@ print_word: { //SEG119 [54] call print_byte //SEG120 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG121 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#24 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG121 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_word::@1->print_byte#0] -- register_copy //SEG122 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn @@ -2448,15 +2475,15 @@ print_byte: { lsr lsr sta _0 - //SEG127 [58] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG127 [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch //SEG128 [59] call print_char //SEG129 [64] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG130 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy - //SEG131 [64] phi (byte) print_char::ch#14 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy + //SEG130 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#146 [phi:print_byte->print_char#0] -- register_copy + //SEG131 [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#5 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 //SEG132 print_byte::@1 @@ -2465,15 +2492,15 @@ print_byte: { lda #$f and b sta _2 - //SEG134 [61] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG134 [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch //SEG135 [62] call print_char //SEG136 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG137 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG138 [64] phi (byte) print_char::ch#14 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG137 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG138 [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#6 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn //SEG139 print_byte::@return @@ -2486,11 +2513,11 @@ print_byte: { // print_char(byte zeropage($f) ch) print_char: { .label ch = $f - //SEG142 [65] *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14 -- _deref_pbuz1=vbuz2 + //SEG142 [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG143 [66] (byte*) print_char_cursor#24 ← ++ (byte*) print_char_cursor#90 -- pbuz1=_inc_pbuz1 + //SEG143 [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -2509,7 +2536,7 @@ print_str: { //SEG147 [69] 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: - //SEG148 [69] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#150 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG148 [69] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#153 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG149 [69] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 //SEG150 print_str::@1 @@ -2526,12 +2553,12 @@ print_str: { rts //SEG154 print_str::@2 b2: - //SEG155 [72] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 + //SEG155 [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG156 [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG156 [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -2548,7 +2575,7 @@ testInt: { .const u = $578 .const n = -$578 .const s = -$578 - //SEG159 [75] (byte*~) print_char_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG159 [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -2556,7 +2583,7 @@ testInt: { //SEG160 [76] call print_str //SEG161 [68] phi from testInt to print_str [phi:testInt->print_str] print_str_from_testInt: - //SEG162 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#155 [phi:testInt->print_str#0] -- register_copy + //SEG162 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#158 [phi:testInt->print_str#0] -- register_copy //SEG163 [68] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 lda #print_word] print_word_from_b1: - //SEG168 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:testInt::@1->print_word#0] -- register_copy + //SEG168 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testInt::@1->print_word#0] -- register_copy //SEG169 [50] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 lda #print_char] print_char_from_b2: - //SEG174 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testInt::@2->print_char#0] -- register_copy - //SEG175 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuz1=vbuc1 + //SEG174 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@2->print_char#0] -- register_copy + //SEG175 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char @@ -2599,7 +2626,7 @@ testInt: { //SEG178 [82] call print_sword //SEG179 [90] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] print_sword_from_b3: - //SEG180 [90] phi (signed word) print_sword::w#5 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 + //SEG180 [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 lda #n @@ -2613,8 +2640,8 @@ testInt: { //SEG183 [84] call print_char //SEG184 [64] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] print_char_from_b4: - //SEG185 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testInt::@4->print_char#0] -- register_copy - //SEG186 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuz1=vbuc1 + //SEG185 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@4->print_char#0] -- register_copy + //SEG186 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char @@ -2626,7 +2653,7 @@ testInt: { //SEG189 [86] call print_sword //SEG190 [90] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] print_sword_from_b5: - //SEG191 [90] phi (signed word) print_sword::w#5 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 + //SEG191 [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 lda #s @@ -2654,26 +2681,62 @@ testInt: { // print_sword(signed word zeropage($14) w) print_sword: { .label w = $14 - //SEG200 [91] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG200 [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG201 [92] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG202 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG201 [92] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG202 print_sword::@3 + b3: //SEG203 [93] call print_char - //SEG204 [64] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG205 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG206 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG204 [64] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG205 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG206 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG207 [94] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG208 [94] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG209 print_sword::@2 + b2: + //SEG210 [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG211 [96] call print_word + //SEG212 [50] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG213 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG214 [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG215 print_sword::@return + breturn: + //SEG216 [97] return + rts + //SEG217 [98] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG218 print_sword::@1 + b1: + //SEG219 [99] call print_char + //SEG220 [64] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG221 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG222 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG207 print_sword::@3 - b3: - //SEG208 [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG223 print_sword::@4 + b4: + //SEG224 [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -2681,298 +2744,276 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG209 [95] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG210 [95] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - jmp b1 - //SEG211 print_sword::@1 - b1: - //SEG212 [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG213 [97] call print_word - //SEG214 [50] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG215 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#24 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG216 [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG217 print_sword::@return - breturn: - //SEG218 [98] return - rts + jmp b2_from_b4 } -//SEG219 testShort +//SEG225 testShort testShort: { .const u = $578 .const n = -$578 .const s = -$578 - //SEG220 [99] (byte*~) print_char_cursor#157 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG226 [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG221 [100] call print_str - //SEG222 [68] phi from testShort to print_str [phi:testShort->print_str] + //SEG227 [102] call print_str + //SEG228 [68] phi from testShort to print_str [phi:testShort->print_str] print_str_from_testShort: - //SEG223 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#157 [phi:testShort->print_str#0] -- register_copy - //SEG224 [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 + //SEG229 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#160 [phi:testShort->print_str#0] -- register_copy + //SEG230 [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG225 [101] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] + //SEG231 [103] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] b1_from_testShort: jmp b1 - //SEG226 testShort::@1 + //SEG232 testShort::@1 b1: - //SEG227 [102] call print_word - //SEG228 [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] + //SEG233 [104] call print_word + //SEG234 [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] print_word_from_b1: - //SEG229 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:testShort::@1->print_word#0] -- register_copy - //SEG230 [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 + //SEG235 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testShort::@1->print_word#0] -- register_copy + //SEG236 [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - //SEG231 [103] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] + //SEG237 [105] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] b2_from_b1: jmp b2 - //SEG232 testShort::@2 + //SEG238 testShort::@2 b2: - //SEG233 [104] call print_char - //SEG234 [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] + //SEG239 [106] call print_char + //SEG240 [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] print_char_from_b2: - //SEG235 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testShort::@2->print_char#0] -- register_copy - //SEG236 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuz1=vbuc1 + //SEG241 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@2->print_char#0] -- register_copy + //SEG242 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG237 [105] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] + //SEG243 [107] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] b3_from_b2: jmp b3 - //SEG238 testShort::@3 + //SEG244 testShort::@3 b3: - //SEG239 [106] call print_sword - //SEG240 [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] + //SEG245 [108] call print_sword + //SEG246 [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] print_sword_from_b3: - //SEG241 [90] phi (signed word) print_sword::w#5 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 + //SEG247 [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - //SEG242 [107] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] + //SEG248 [109] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] b4_from_b3: jmp b4 - //SEG243 testShort::@4 + //SEG249 testShort::@4 b4: - //SEG244 [108] call print_char - //SEG245 [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] + //SEG250 [110] call print_char + //SEG251 [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] print_char_from_b4: - //SEG246 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testShort::@4->print_char#0] -- register_copy - //SEG247 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuz1=vbuc1 + //SEG252 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@4->print_char#0] -- register_copy + //SEG253 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG248 [109] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] + //SEG254 [111] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] b5_from_b4: jmp b5 - //SEG249 testShort::@5 + //SEG255 testShort::@5 b5: - //SEG250 [110] call print_sword - //SEG251 [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] + //SEG256 [112] call print_sword + //SEG257 [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] print_sword_from_b5: - //SEG252 [90] phi (signed word) print_sword::w#5 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 + //SEG258 [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - //SEG253 [111] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] + //SEG259 [113] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] b6_from_b5: jmp b6 - //SEG254 testShort::@6 + //SEG260 testShort::@6 b6: - //SEG255 [112] call print_ln - //SEG256 [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] + //SEG261 [114] call print_ln + //SEG262 [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] print_ln_from_b6: - //SEG257 [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy + //SEG263 [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG258 testShort::@return + //SEG264 testShort::@return breturn: - //SEG259 [113] return + //SEG265 [115] return rts str: .text "short: @" } -//SEG260 testChar +//SEG266 testChar testChar: { .const u = $e .const n = -$e .const s = -$e - //SEG261 [115] call print_str - //SEG262 [68] phi from testChar to print_str [phi:testChar->print_str] + //SEG267 [117] call print_str + //SEG268 [68] phi from testChar to print_str [phi:testChar->print_str] print_str_from_testChar: - //SEG263 [68] phi (byte*) print_char_cursor#150 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 + //SEG269 [68] phi (byte*) print_char_cursor#153 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG264 [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 + //SEG270 [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG265 [116] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] + //SEG271 [118] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] b1_from_testChar: jmp b1 - //SEG266 testChar::@1 + //SEG272 testChar::@1 b1: - //SEG267 [117] call print_byte - //SEG268 [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] + //SEG273 [119] call print_byte + //SEG274 [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] print_byte_from_b1: - //SEG269 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#132 [phi:testChar::@1->print_byte#0] -- register_copy - //SEG270 [56] phi (byte) print_byte::b#4 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuz1=vbuc1 + //SEG275 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#134 [phi:testChar::@1->print_byte#0] -- register_copy + //SEG276 [56] phi (byte) print_byte::b#4 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuz1=vbuc1 lda #u sta print_byte.b jsr print_byte - //SEG271 [118] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] + //SEG277 [120] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] b2_from_b1: jmp b2 - //SEG272 testChar::@2 + //SEG278 testChar::@2 b2: - //SEG273 [119] call print_char - //SEG274 [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] + //SEG279 [121] call print_char + //SEG280 [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] print_char_from_b2: - //SEG275 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testChar::@2->print_char#0] -- register_copy - //SEG276 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuz1=vbuc1 + //SEG281 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@2->print_char#0] -- register_copy + //SEG282 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG277 [120] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] + //SEG283 [122] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] b3_from_b2: jmp b3 - //SEG278 testChar::@3 + //SEG284 testChar::@3 b3: - //SEG279 [121] call print_sbyte - //SEG280 [129] phi from testChar::@3 to print_sbyte [phi:testChar::@3->print_sbyte] + //SEG285 [123] call print_sbyte + //SEG286 [131] phi from testChar::@3 to print_sbyte [phi:testChar::@3->print_sbyte] print_sbyte_from_b3: - //SEG281 [129] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::n#0 [phi:testChar::@3->print_sbyte#0] -- vbsz1=vbsc1 + //SEG287 [131] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::n#0 [phi:testChar::@3->print_sbyte#0] -- vbsz1=vbsc1 lda #n sta print_sbyte.b jsr print_sbyte - //SEG282 [122] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] + //SEG288 [124] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] b4_from_b3: jmp b4 - //SEG283 testChar::@4 + //SEG289 testChar::@4 b4: - //SEG284 [123] call print_char - //SEG285 [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] + //SEG290 [125] call print_char + //SEG291 [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] print_char_from_b4: - //SEG286 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testChar::@4->print_char#0] -- register_copy - //SEG287 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuz1=vbuc1 + //SEG292 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@4->print_char#0] -- register_copy + //SEG293 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG288 [124] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] + //SEG294 [126] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] b5_from_b4: jmp b5 - //SEG289 testChar::@5 + //SEG295 testChar::@5 b5: - //SEG290 [125] call print_sbyte - //SEG291 [129] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] + //SEG296 [127] call print_sbyte + //SEG297 [131] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] print_sbyte_from_b5: - //SEG292 [129] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::s#0 [phi:testChar::@5->print_sbyte#0] -- vbsz1=vbsc1 + //SEG298 [131] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::s#0 [phi:testChar::@5->print_sbyte#0] -- vbsz1=vbsc1 lda #s sta print_sbyte.b jsr print_sbyte - //SEG293 [126] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] + //SEG299 [128] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] b6_from_b5: jmp b6 - //SEG294 testChar::@6 + //SEG300 testChar::@6 b6: - //SEG295 [127] call print_ln - //SEG296 [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] + //SEG301 [129] call print_ln + //SEG302 [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] print_ln_from_b6: - //SEG297 [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 + //SEG303 [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp breturn - //SEG298 testChar::@return + //SEG304 testChar::@return breturn: - //SEG299 [128] return + //SEG305 [130] return rts str: .text "char: @" } -//SEG300 print_sbyte +//SEG306 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage($16) b) print_sbyte: { .label b = $16 - //SEG301 [130] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG307 [132] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG302 [131] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG308 [133] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG303 print_sbyte::@3 + //SEG309 print_sbyte::@3 b3: - //SEG304 [132] call print_char - //SEG305 [64] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG310 [134] call print_char + //SEG311 [64] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG306 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG307 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG312 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG313 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG308 [133] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG314 [135] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG309 [133] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG315 [135] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG310 print_sbyte::@2 + //SEG316 print_sbyte::@2 b2: - //SEG311 [134] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 -- vbuz1=vbuz2 + //SEG317 [136] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG312 [135] call print_byte - //SEG313 [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG318 [137] call print_byte + //SEG319 [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG314 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#24 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG315 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG320 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG321 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG316 print_sbyte::@return + //SEG322 print_sbyte::@return breturn: - //SEG317 [136] return + //SEG323 [138] return rts - //SEG318 [137] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG324 [139] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG319 print_sbyte::@1 + //SEG325 print_sbyte::@1 b1: - //SEG320 [138] call print_char - //SEG321 [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG326 [140] call print_char + //SEG327 [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG322 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG323 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG328 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG329 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG324 print_sbyte::@4 + //SEG330 print_sbyte::@4 b4: - //SEG325 [139] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsz1=_neg_vbsz1 + //SEG331 [141] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -2980,34 +3021,34 @@ print_sbyte: { sta b jmp b2_from_b4 } -//SEG326 print_cls +//SEG332 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $17 - //SEG327 [141] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG333 [143] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG328 [141] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG334 [143] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG329 [141] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG335 [143] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG330 [141] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG336 [143] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG331 print_cls::@1 + //SEG337 print_cls::@1 b1: - //SEG332 [142] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG338 [144] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG333 [143] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG339 [145] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG334 [144] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG340 [146] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -3015,87 +3056,87 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG335 print_cls::@return + //SEG341 print_cls::@return breturn: - //SEG336 [145] return + //SEG342 [147] return rts } -//SEG337 File Data +//SEG343 File Data print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [15] (byte*~) print_char_cursor#156 ← (byte*) print_line_cursor#1 [ print_char_cursor#156 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#156 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#24 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testShort:9::print_ln:112 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testChar:7::print_ln:127 [ print_line_cursor#1 print_char_cursor#24 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#24 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testShort:9::print_ln:112 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testChar:7::print_ln:127 [ print_line_cursor#1 print_char_cursor#24 ] ) always clobbers reg byte a -Statement [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#24 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#24 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#24 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#24 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#24 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#24 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 [ print_char_cursor#24 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#24 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#24 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#140 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#140 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#140 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#140 print_word::w#1 ] ) always clobbers reg byte a -Statement [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#24 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#24 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_char_cursor#24 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_char_cursor#24 print_word::w#2 ] ) always clobbers reg byte a -Statement [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#139 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testInt:11::print_sword:82::print_word:97 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testInt:11::print_sword:86::print_word:97 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testShort:9::print_sword:106::print_word:97 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testShort:9::print_sword:110::print_word:97 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testShort:9::print_word:102 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a -Statement [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#24 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testInt:11::print_sword:82::print_word:97 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testInt:11::print_sword:86::print_word:97 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testShort:9::print_sword:106::print_word:97 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testShort:9::print_sword:110::print_word:97 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testShort:9::print_word:102 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] ) always clobbers reg byte a -Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte) 4 [ print_byte::b#4 print_char_cursor#143 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_word:102::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_word:102::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testChar:7::print_byte:117 [ print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testChar:7::print_sbyte:121::print_byte:135 [ print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testChar:7::print_sbyte:125::print_byte:135 [ print_byte::b#4 print_char_cursor#143 print_byte::$0 ] ) always clobbers reg byte a +Statement [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#159 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#159 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#25 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testShort:9::print_ln:114 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testChar:7::print_ln:129 [ print_line_cursor#1 print_char_cursor#25 ] ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#25 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testShort:9::print_ln:114 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testChar:7::print_ln:129 [ print_line_cursor#1 print_char_cursor#25 ] ) always clobbers reg byte a +Statement [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#25 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#3 ] ) always clobbers reg byte a +Statement [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#25 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#0 ] ) always clobbers reg byte a +Statement [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 [ print_char_cursor#25 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] ) always clobbers reg byte a +Statement [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#25 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] ) always clobbers reg byte a +Statement [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#142 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_sword:82::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_sword:86::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_sword:108::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_sword:112::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_word:104 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a +Statement [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#25 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_sword:82::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_sword:86::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_sword:108::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_sword:112::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_word:104 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] ) always clobbers reg byte a +Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte) 4 [ print_byte::b#4 print_char_cursor#146 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_word:104::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_word:104::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_byte:119 [ print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_sbyte:123::print_byte:137 [ print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_sbyte:127::print_byte:137 [ print_byte::b#4 print_char_cursor#146 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f [ print_char_cursor#24 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_word:102::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_word:102::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testChar:7::print_byte:117 [ print_char_cursor#24 print_byte::$2 ] main:2::testChar:7::print_sbyte:121::print_byte:135 [ print_char_cursor#24 print_byte::$2 ] main:2::testChar:7::print_sbyte:125::print_byte:135 [ print_char_cursor#24 print_byte::$2 ] ) always clobbers reg byte a -Statement [65] *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14 [ print_char_cursor#90 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_word:102::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_word:102::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testChar:7::print_byte:117::print_char:59 [ print_byte::b#4 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:121::print_byte:135::print_char:59 [ print_byte::b#4 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:125::print_byte:135::print_char:59 [ print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testShort:9::print_word:102::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testShort:9::print_word:102::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testChar:7::print_byte:117::print_char:62 [ print_char_cursor#90 ] main:2::testChar:7::print_sbyte:121::print_byte:135::print_char:62 [ print_char_cursor#90 ] main:2::testChar:7::print_sbyte:125::print_byte:135::print_char:62 [ print_char_cursor#90 ] main:2::testInt:11::print_char:80 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_char:84 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_char:93 [ print_line_cursor#1 print_sword::w#5 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_char:93 [ print_line_cursor#1 print_sword::w#5 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_char:93 [ print_line_cursor#1 print_sword::w#5 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_char:93 [ print_line_cursor#1 print_sword::w#5 print_char_cursor#90 ] main:2::testShort:9::print_char:104 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testChar:7::print_char:119 [ print_char_cursor#90 ] main:2::testChar:7::print_char:123 [ print_char_cursor#90 ] main:2::testChar:7::print_sbyte:121::print_char:132 [ print_sbyte::b#3 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:125::print_char:132 [ print_sbyte::b#3 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:121::print_char:138 [ print_sbyte::b#3 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:125::print_char:138 [ print_sbyte::b#3 print_char_cursor#90 ] ) always clobbers reg byte y +Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f [ print_char_cursor#25 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_word:104::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_word:104::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_byte:119 [ print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_sbyte:123::print_byte:137 [ print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_sbyte:127::print_byte:137 [ print_char_cursor#25 print_byte::$2 ] ) always clobbers reg byte a +Statement [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 [ print_char_cursor#92 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testChar:7::print_byte:119::print_char:59 [ print_byte::b#4 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:123::print_byte:137::print_char:59 [ print_byte::b#4 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_byte:137::print_char:59 [ print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testChar:7::print_byte:119::print_char:62 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:123::print_byte:137::print_char:62 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_byte:137::print_char:62 [ print_char_cursor#92 ] main:2::testInt:11::print_char:80 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_char:84 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_char:106 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_char:110 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testChar:7::print_char:121 [ print_char_cursor#92 ] main:2::testChar:7::print_char:125 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:123::print_char:134 [ print_sbyte::b#3 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_char:134 [ print_sbyte::b#3 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:123::print_char:140 [ print_sbyte::b#3 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_char:140 [ print_sbyte::b#3 print_char_cursor#92 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:22 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] -Statement [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testShort:9::print_str:100 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testChar:7::print_str:115 [ print_char_cursor#132 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#5) [ print_char_cursor#132 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testShort:9::print_str:100 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testChar:7::print_str:115 [ print_char_cursor#132 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [75] (byte*~) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#155 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#155 ] ) always clobbers reg byte a -Statement [91] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#24 print_sword::w#5 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#5 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#5 ] main:2::testShort:9::print_sword:106 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#5 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#5 ] ) always clobbers reg byte a -Statement [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#24 print_sword::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#0 ] main:2::testShort:9::print_sword:106 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#0 ] ) always clobbers reg byte a -Statement [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#24 print_word::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#24 print_word::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#24 print_word::w#0 ] main:2::testShort:9::print_sword:106 [ print_line_cursor#1 print_char_cursor#24 print_word::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#24 print_word::w#0 ] ) always clobbers reg byte a -Statement [99] (byte*~) print_char_cursor#157 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#157 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#157 ] ) always clobbers reg byte a -Statement [139] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#24 print_sbyte::b#0 ] ( main:2::testChar:7::print_sbyte:121 [ print_char_cursor#24 print_sbyte::b#0 ] main:2::testChar:7::print_sbyte:125 [ print_char_cursor#24 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [142] *((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 [144] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [15] (byte*~) print_char_cursor#156 ← (byte*) print_line_cursor#1 [ print_char_cursor#156 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#156 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#24 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testShort:9::print_ln:112 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testChar:7::print_ln:127 [ print_line_cursor#1 print_char_cursor#24 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#24 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testShort:9::print_ln:112 [ print_line_cursor#1 print_char_cursor#24 ] main:2::testChar:7::print_ln:127 [ print_line_cursor#1 print_char_cursor#24 ] ) always clobbers reg byte a -Statement [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#24 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#24 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#24 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#24 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#24 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#24 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 [ print_char_cursor#24 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#24 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#24 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#140 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#140 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#140 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#140 print_word::w#1 ] ) always clobbers reg byte a -Statement [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#24 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#24 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_char_cursor#24 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_char_cursor#24 print_word::w#2 ] ) always clobbers reg byte a -Statement [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#139 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testInt:11::print_sword:82::print_word:97 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testInt:11::print_sword:86::print_word:97 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testShort:9::print_sword:106::print_word:97 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testShort:9::print_sword:110::print_word:97 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] main:2::testShort:9::print_word:102 [ print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a -Statement [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#24 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testInt:11::print_sword:82::print_word:97 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testInt:11::print_sword:86::print_word:97 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testShort:9::print_sword:106::print_word:97 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testShort:9::print_sword:110::print_word:97 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] main:2::testShort:9::print_word:102 [ print_line_cursor#1 print_char_cursor#24 print_byte::b#2 ] ) always clobbers reg byte a -Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte) 4 [ print_byte::b#4 print_char_cursor#143 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_word:102::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testShort:9::print_word:102::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testChar:7::print_byte:117 [ print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testChar:7::print_sbyte:121::print_byte:135 [ print_byte::b#4 print_char_cursor#143 print_byte::$0 ] main:2::testChar:7::print_sbyte:125::print_byte:135 [ print_byte::b#4 print_char_cursor#143 print_byte::$0 ] ) always clobbers reg byte a -Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f [ print_char_cursor#24 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_word:102::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testShort:9::print_word:102::print_byte:54 [ print_line_cursor#1 print_char_cursor#24 print_byte::$2 ] main:2::testChar:7::print_byte:117 [ print_char_cursor#24 print_byte::$2 ] main:2::testChar:7::print_sbyte:121::print_byte:135 [ print_char_cursor#24 print_byte::$2 ] main:2::testChar:7::print_sbyte:125::print_byte:135 [ print_char_cursor#24 print_byte::$2 ] ) always clobbers reg byte a -Statement [65] *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14 [ print_char_cursor#90 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_word:102::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testShort:9::print_word:102::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#90 ] main:2::testChar:7::print_byte:117::print_char:59 [ print_byte::b#4 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:121::print_byte:135::print_char:59 [ print_byte::b#4 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:125::print_byte:135::print_char:59 [ print_byte::b#4 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testShort:9::print_word:102::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#90 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_word:97::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_word:97::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_word:97::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_word:97::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testShort:9::print_word:102::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testChar:7::print_byte:117::print_char:62 [ print_char_cursor#90 ] main:2::testChar:7::print_sbyte:121::print_byte:135::print_char:62 [ print_char_cursor#90 ] main:2::testChar:7::print_sbyte:125::print_byte:135::print_char:62 [ print_char_cursor#90 ] main:2::testInt:11::print_char:80 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_char:84 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testInt:11::print_sword:82::print_char:93 [ print_line_cursor#1 print_sword::w#5 print_char_cursor#90 ] main:2::testInt:11::print_sword:86::print_char:93 [ print_line_cursor#1 print_sword::w#5 print_char_cursor#90 ] main:2::testShort:9::print_sword:106::print_char:93 [ print_line_cursor#1 print_sword::w#5 print_char_cursor#90 ] main:2::testShort:9::print_sword:110::print_char:93 [ print_line_cursor#1 print_sword::w#5 print_char_cursor#90 ] main:2::testShort:9::print_char:104 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#90 ] main:2::testChar:7::print_char:119 [ print_char_cursor#90 ] main:2::testChar:7::print_char:123 [ print_char_cursor#90 ] main:2::testChar:7::print_sbyte:121::print_char:132 [ print_sbyte::b#3 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:125::print_char:132 [ print_sbyte::b#3 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:121::print_char:138 [ print_sbyte::b#3 print_char_cursor#90 ] main:2::testChar:7::print_sbyte:125::print_char:138 [ print_sbyte::b#3 print_char_cursor#90 ] ) always clobbers reg byte y -Statement [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testShort:9::print_str:100 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testChar:7::print_str:115 [ print_char_cursor#132 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#5) [ print_char_cursor#132 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testShort:9::print_str:100 [ print_line_cursor#1 print_char_cursor#132 print_str::str#5 ] main:2::testChar:7::print_str:115 [ print_char_cursor#132 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [75] (byte*~) print_char_cursor#155 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#155 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#155 ] ) always clobbers reg byte a -Statement [91] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#24 print_sword::w#5 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#5 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#5 ] main:2::testShort:9::print_sword:106 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#5 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#5 ] ) always clobbers reg byte a -Statement [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#24 print_sword::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#0 ] main:2::testShort:9::print_sword:106 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#24 print_sword::w#0 ] ) always clobbers reg byte a -Statement [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#24 print_word::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#24 print_word::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#24 print_word::w#0 ] main:2::testShort:9::print_sword:106 [ print_line_cursor#1 print_char_cursor#24 print_word::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#24 print_word::w#0 ] ) always clobbers reg byte a -Statement [99] (byte*~) print_char_cursor#157 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#157 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#157 ] ) always clobbers reg byte a -Statement [139] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#24 print_sbyte::b#0 ] ( main:2::testChar:7::print_sbyte:121 [ print_char_cursor#24 print_sbyte::b#0 ] main:2::testChar:7::print_sbyte:125 [ print_char_cursor#24 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [142] *((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 [144] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 [ print_char_cursor#134 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testShort:9::print_str:102 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testChar:7::print_str:117 [ print_char_cursor#134 print_str::str#5 ] ) always clobbers reg byte a reg byte y +Statement [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) [ print_char_cursor#134 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testShort:9::print_str:102 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testChar:7::print_str:117 [ print_char_cursor#134 print_str::str#5 ] ) always clobbers reg byte a reg byte y +Statement [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#158 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#158 ] ) always clobbers reg byte a +Statement [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#25 print_sword::w#10 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] ) always clobbers reg byte a +Statement [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#25 print_word::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] ) always clobbers reg byte a +Statement [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#25 print_sword::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] ) always clobbers reg byte a +Statement [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#160 ] ) always clobbers reg byte a +Statement [141] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#25 print_sbyte::b#0 ] ( main:2::testChar:7::print_sbyte:123 [ print_char_cursor#25 print_sbyte::b#0 ] main:2::testChar:7::print_sbyte:127 [ print_char_cursor#25 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [144] *((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 [146] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#159 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#159 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#25 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testShort:9::print_ln:114 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testChar:7::print_ln:129 [ print_line_cursor#1 print_char_cursor#25 ] ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#25 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testShort:9::print_ln:114 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testChar:7::print_ln:129 [ print_line_cursor#1 print_char_cursor#25 ] ) always clobbers reg byte a +Statement [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#25 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#3 ] ) always clobbers reg byte a +Statement [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#25 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#0 ] ) always clobbers reg byte a +Statement [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 [ print_char_cursor#25 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] ) always clobbers reg byte a +Statement [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#25 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] ) always clobbers reg byte a +Statement [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#142 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_sword:82::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_sword:86::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_sword:108::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_sword:112::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_word:104 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a +Statement [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#25 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_sword:82::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_sword:86::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_sword:108::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_sword:112::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_word:104 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] ) always clobbers reg byte a +Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte) 4 [ print_byte::b#4 print_char_cursor#146 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_word:104::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_word:104::print_byte:54 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_byte:119 [ print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_sbyte:123::print_byte:137 [ print_byte::b#4 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_sbyte:127::print_byte:137 [ print_byte::b#4 print_char_cursor#146 print_byte::$0 ] ) always clobbers reg byte a +Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f [ print_char_cursor#25 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_word:104::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_word:104::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_byte:119 [ print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_sbyte:123::print_byte:137 [ print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_sbyte:127::print_byte:137 [ print_char_cursor#25 print_byte::$2 ] ) always clobbers reg byte a +Statement [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 [ print_char_cursor#92 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#4 print_char_cursor#92 ] main:2::testChar:7::print_byte:119::print_char:59 [ print_byte::b#4 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:123::print_byte:137::print_char:59 [ print_byte::b#4 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_byte:137::print_char:59 [ print_byte::b#4 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testChar:7::print_byte:119::print_char:62 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:123::print_byte:137::print_char:62 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_byte:137::print_char:62 [ print_char_cursor#92 ] main:2::testInt:11::print_char:80 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_char:84 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_char:106 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_char:110 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testChar:7::print_char:121 [ print_char_cursor#92 ] main:2::testChar:7::print_char:125 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:123::print_char:134 [ print_sbyte::b#3 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_char:134 [ print_sbyte::b#3 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:123::print_char:140 [ print_sbyte::b#3 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_char:140 [ print_sbyte::b#3 print_char_cursor#92 ] ) always clobbers reg byte y +Statement [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 [ print_char_cursor#134 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testShort:9::print_str:102 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testChar:7::print_str:117 [ print_char_cursor#134 print_str::str#5 ] ) always clobbers reg byte a reg byte y +Statement [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) [ print_char_cursor#134 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testShort:9::print_str:102 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testChar:7::print_str:117 [ print_char_cursor#134 print_str::str#5 ] ) always clobbers reg byte a reg byte y +Statement [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#158 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#158 ] ) always clobbers reg byte a +Statement [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#25 print_sword::w#10 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] ) always clobbers reg byte a +Statement [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#25 print_word::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] ) always clobbers reg byte a +Statement [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#25 print_sword::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] ) always clobbers reg byte a +Statement [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#160 ] ) always clobbers reg byte a +Statement [141] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#25 print_sbyte::b#0 ] ( main:2::testChar:7::print_sbyte:123 [ print_char_cursor#25 print_sbyte::b#0 ] main:2::testChar:7::print_sbyte:127 [ print_char_cursor#25 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [144] *((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 [146] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] : zp ZP_DWORD:4 , Potential registers zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] : zp ZP_DWORD:8 , Potential registers zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:12 , Potential registers zp ZP_BYTE:14 [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:14 , reg byte x , -Potential registers zp ZP_BYTE:15 [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:16 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] : zp ZP_WORD:16 , +Potential registers zp ZP_BYTE:15 [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:16 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] : zp ZP_WORD:16 , Potential registers zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] : zp ZP_WORD:18 , -Potential registers zp ZP_WORD:20 [ print_sword::w#6 print_sword::w#5 print_sword::w#0 ] : zp ZP_WORD:20 , +Potential registers zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] : zp ZP_WORD:20 , Potential registers zp ZP_BYTE:22 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , Potential registers zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:23 , Potential registers zp ZP_BYTE:25 [ print_byte::$0 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:26 [ print_byte::$2 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 63.47: zp ZP_WORD:16 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] 32.83: zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] +Uplift Scope [] 64.48: zp ZP_WORD:16 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] 32.83: zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] Uplift Scope [print_str] 35.5: zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_byte] 14.5: zp ZP_BYTE:14 [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:25 [ print_byte::$0 ] 4: zp ZP_BYTE:26 [ print_byte::$2 ] Uplift Scope [print_word] 15.33: zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:15 [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ] -Uplift Scope [print_sword] 9.5: zp ZP_WORD:20 [ print_sword::w#6 print_sword::w#5 print_sword::w#0 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:15 [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] Uplift Scope [print_sdword] 9.5: zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] +Uplift Scope [print_sword] 9: zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] Uplift Scope [print_sbyte] 9: zp ZP_BYTE:22 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] Uplift Scope [print_dword] 6: zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] Uplift Scope [print_ln] @@ -3105,26 +3146,26 @@ Uplift Scope [testShort] Uplift Scope [testInt] Uplift Scope [testLong] -Uplifting [] best 2671 combination zp ZP_WORD:16 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -Uplifting [print_str] best 2671 combination zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] -Uplifting [print_cls] best 2671 combination zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 2651 combination reg byte x [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_word] best 2651 combination zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplifting [print_char] best 2606 combination reg byte a [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ] -Uplifting [print_sword] best 2606 combination zp ZP_WORD:20 [ print_sword::w#6 print_sword::w#5 print_sword::w#0 ] -Uplifting [print_sdword] best 2606 combination zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] -Uplifting [print_sbyte] best 2594 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] -Uplifting [print_dword] best 2594 combination zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] -Uplifting [print_ln] best 2594 combination -Uplifting [main] best 2594 combination -Uplifting [testChar] best 2594 combination -Uplifting [testShort] best 2594 combination -Uplifting [testInt] best 2594 combination -Uplifting [testLong] best 2594 combination +Uplifting [] best 2688 combination zp ZP_WORD:16 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] +Uplifting [print_str] best 2688 combination zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] +Uplifting [print_cls] best 2688 combination zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 2668 combination reg byte x [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [print_word] best 2668 combination zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [print_char] best 2620 combination reg byte a [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] +Uplifting [print_sdword] best 2620 combination zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] +Uplifting [print_sword] best 2620 combination zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] +Uplifting [print_sbyte] best 2608 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] +Uplifting [print_dword] best 2608 combination zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] +Uplifting [print_ln] best 2608 combination +Uplifting [main] best 2608 combination +Uplifting [testChar] best 2608 combination +Uplifting [testShort] best 2608 combination +Uplifting [testInt] best 2608 combination +Uplifting [testLong] best 2608 combination Coalescing zero page register with common assignment [ zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] ] with [ zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:20 [ print_sword::w#6 print_sword::w#5 print_sword::w#0 ] ] - score: 1 -Allocated (was zp ZP_WORD:12) zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#6 print_sword::w#5 print_sword::w#0 ] -Allocated (was zp ZP_WORD:16) zp ZP_WORD:10 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] ] - score: 1 +Allocated (was zp ZP_WORD:12) zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] +Allocated (was zp ZP_WORD:16) zp ZP_WORD:10 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] Allocated (was zp ZP_WORD:18) zp ZP_WORD:12 [ print_str::str#5 print_str::str#7 print_str::str#0 ] Allocated (was zp ZP_WORD:23) zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] @@ -3157,7 +3198,7 @@ bend: //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [140] phi from main to print_cls [phi:main->print_cls] + //SEG12 [142] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -3166,7 +3207,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call testChar - //SEG16 [114] phi from main::@1 to testChar [phi:main::@1->testChar] + //SEG16 [116] phi from main::@1 to testChar [phi:main::@1->testChar] testChar_from_b1: jsr testChar //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -3201,7 +3242,7 @@ testLong: { .const u = $222e0 .const n = -$222e0 .const s = -$222e0 - //SEG29 [15] (byte*~) print_char_cursor#156 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG29 [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -3209,7 +3250,7 @@ testLong: { //SEG30 [16] call print_str //SEG31 [68] phi from testLong to print_str [phi:testLong->print_str] print_str_from_testLong: - //SEG32 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#156 [phi:testLong->print_str#0] -- register_copy + //SEG32 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#159 [phi:testLong->print_str#0] -- register_copy //SEG33 [68] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 lda #print_dword] print_dword_from_b1: - //SEG38 [44] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:testLong::@1->print_dword#0] -- register_copy + //SEG38 [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:testLong::@1->print_dword#0] -- register_copy //SEG39 [44] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 lda #print_char] print_char_from_b2: - //SEG44 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testLong::@2->print_char#0] -- register_copy - //SEG45 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 + //SEG44 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@2->print_char#0] -- register_copy + //SEG45 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG46 [21] phi from testLong::@2 to testLong::@3 [phi:testLong::@2->testLong::@3] @@ -3273,8 +3314,8 @@ testLong: { //SEG53 [24] call print_char //SEG54 [64] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] print_char_from_b4: - //SEG55 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testLong::@4->print_char#0] -- register_copy - //SEG56 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 + //SEG55 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@4->print_char#0] -- register_copy + //SEG56 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG57 [25] phi from testLong::@4 to testLong::@5 [phi:testLong::@4->testLong::@5] @@ -3330,7 +3371,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG74 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG74 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -3361,8 +3402,8 @@ print_sdword: { //SEG81 [38] call print_char //SEG82 [64] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] print_char_from_b2: - //SEG83 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG84 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG83 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG84 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b3 @@ -3397,7 +3438,7 @@ print_sdword: { //SEG91 [42] call print_dword //SEG92 [44] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] print_dword_from_b1: - //SEG93 [44] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#24 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG93 [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#25 [phi:print_sdword::@1->print_dword#0] -- register_copy //SEG94 [44] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword jmp breturn @@ -3419,7 +3460,7 @@ print_dword: { //SEG99 [46] call print_word //SEG100 [50] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG101 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#140 [phi:print_dword->print_word#0] -- register_copy + //SEG101 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#143 [phi:print_dword->print_word#0] -- register_copy //SEG102 [50] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 @@ -3433,7 +3474,7 @@ print_dword: { //SEG105 [48] call print_word //SEG106 [50] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG107 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#24 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG107 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_dword::@1->print_word#0] -- register_copy //SEG108 [50] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn @@ -3453,7 +3494,7 @@ print_word: { //SEG113 [52] call print_byte //SEG114 [56] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG115 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy + //SEG115 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy //SEG116 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 @@ -3465,7 +3506,7 @@ print_word: { //SEG119 [54] call print_byte //SEG120 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG121 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#24 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG121 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_word::@1->print_byte#0] -- register_copy //SEG122 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn @@ -3484,14 +3525,14 @@ print_byte: { lsr lsr lsr - //SEG127 [58] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG127 [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG128 [59] call print_char //SEG129 [64] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG130 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy - //SEG131 [64] phi (byte) print_char::ch#14 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy + //SEG130 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#146 [phi:print_byte->print_char#0] -- register_copy + //SEG131 [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#5 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 //SEG132 print_byte::@1 @@ -3499,13 +3540,13 @@ print_byte: { //SEG133 [60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - //SEG134 [61] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG134 [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x //SEG135 [62] call print_char //SEG136 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG137 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG138 [64] phi (byte) print_char::ch#14 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG137 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG138 [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#6 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn //SEG139 print_byte::@return @@ -3517,10 +3558,10 @@ print_byte: { // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG142 [65] *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14 -- _deref_pbuz1=vbuaa + //SEG142 [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG143 [66] (byte*) print_char_cursor#24 ← ++ (byte*) print_char_cursor#90 -- pbuz1=_inc_pbuz1 + //SEG143 [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -3539,7 +3580,7 @@ print_str: { //SEG147 [69] 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: - //SEG148 [69] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#150 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG148 [69] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#153 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG149 [69] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 //SEG150 print_str::@1 @@ -3556,12 +3597,12 @@ print_str: { rts //SEG154 print_str::@2 b2: - //SEG155 [72] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 + //SEG155 [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG156 [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG156 [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -3578,7 +3619,7 @@ testInt: { .const u = $578 .const n = -$578 .const s = -$578 - //SEG159 [75] (byte*~) print_char_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG159 [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -3586,7 +3627,7 @@ testInt: { //SEG160 [76] call print_str //SEG161 [68] phi from testInt to print_str [phi:testInt->print_str] print_str_from_testInt: - //SEG162 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#155 [phi:testInt->print_str#0] -- register_copy + //SEG162 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#158 [phi:testInt->print_str#0] -- register_copy //SEG163 [68] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 lda #print_word] print_word_from_b1: - //SEG168 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:testInt::@1->print_word#0] -- register_copy + //SEG168 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testInt::@1->print_word#0] -- register_copy //SEG169 [50] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 lda #print_char] print_char_from_b2: - //SEG174 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testInt::@2->print_char#0] -- register_copy - //SEG175 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 + //SEG174 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@2->print_char#0] -- register_copy + //SEG175 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG176 [81] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3] @@ -3628,7 +3669,7 @@ testInt: { //SEG178 [82] call print_sword //SEG179 [90] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] print_sword_from_b3: - //SEG180 [90] phi (signed word) print_sword::w#5 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 + //SEG180 [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 lda #n @@ -3642,8 +3683,8 @@ testInt: { //SEG183 [84] call print_char //SEG184 [64] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] print_char_from_b4: - //SEG185 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testInt::@4->print_char#0] -- register_copy - //SEG186 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 + //SEG185 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@4->print_char#0] -- register_copy + //SEG186 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG187 [85] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5] @@ -3654,7 +3695,7 @@ testInt: { //SEG189 [86] call print_sword //SEG190 [90] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] print_sword_from_b5: - //SEG191 [90] phi (signed word) print_sword::w#5 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 + //SEG191 [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 lda #s @@ -3682,25 +3723,56 @@ testInt: { // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - //SEG200 [91] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG200 [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG201 [92] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG202 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG201 [92] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG202 print_sword::@3 + b3: //SEG203 [93] call print_char - //SEG204 [64] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG205 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG206 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG204 [64] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG205 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG206 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG207 [94] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG208 [94] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG209 print_sword::@2 + b2: + //SEG210 [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + //SEG211 [96] call print_word + //SEG212 [50] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG213 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG214 [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG215 print_sword::@return + breturn: + //SEG216 [97] return + rts + //SEG217 [98] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG218 print_sword::@1 + b1: + //SEG219 [99] call print_char + //SEG220 [64] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG221 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG222 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG207 print_sword::@3 - b3: - //SEG208 [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG223 print_sword::@4 + b4: + //SEG224 [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -3708,282 +3780,264 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG209 [95] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG210 [95] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - jmp b1 - //SEG211 print_sword::@1 - b1: - //SEG212 [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 - //SEG213 [97] call print_word - //SEG214 [50] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG215 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#24 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG216 [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG217 print_sword::@return - breturn: - //SEG218 [98] return - rts + jmp b2_from_b4 } -//SEG219 testShort +//SEG225 testShort testShort: { .const u = $578 .const n = -$578 .const s = -$578 - //SEG220 [99] (byte*~) print_char_cursor#157 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG226 [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG221 [100] call print_str - //SEG222 [68] phi from testShort to print_str [phi:testShort->print_str] + //SEG227 [102] call print_str + //SEG228 [68] phi from testShort to print_str [phi:testShort->print_str] print_str_from_testShort: - //SEG223 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#157 [phi:testShort->print_str#0] -- register_copy - //SEG224 [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 + //SEG229 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#160 [phi:testShort->print_str#0] -- register_copy + //SEG230 [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG225 [101] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] + //SEG231 [103] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] b1_from_testShort: jmp b1 - //SEG226 testShort::@1 + //SEG232 testShort::@1 b1: - //SEG227 [102] call print_word - //SEG228 [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] + //SEG233 [104] call print_word + //SEG234 [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] print_word_from_b1: - //SEG229 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:testShort::@1->print_word#0] -- register_copy - //SEG230 [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 + //SEG235 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testShort::@1->print_word#0] -- register_copy + //SEG236 [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - //SEG231 [103] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] + //SEG237 [105] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] b2_from_b1: jmp b2 - //SEG232 testShort::@2 + //SEG238 testShort::@2 b2: - //SEG233 [104] call print_char - //SEG234 [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] + //SEG239 [106] call print_char + //SEG240 [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] print_char_from_b2: - //SEG235 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testShort::@2->print_char#0] -- register_copy - //SEG236 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 + //SEG241 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@2->print_char#0] -- register_copy + //SEG242 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG237 [105] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] + //SEG243 [107] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] b3_from_b2: jmp b3 - //SEG238 testShort::@3 + //SEG244 testShort::@3 b3: - //SEG239 [106] call print_sword - //SEG240 [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] + //SEG245 [108] call print_sword + //SEG246 [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] print_sword_from_b3: - //SEG241 [90] phi (signed word) print_sword::w#5 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 + //SEG247 [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - //SEG242 [107] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] + //SEG248 [109] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] b4_from_b3: jmp b4 - //SEG243 testShort::@4 + //SEG249 testShort::@4 b4: - //SEG244 [108] call print_char - //SEG245 [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] + //SEG250 [110] call print_char + //SEG251 [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] print_char_from_b4: - //SEG246 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testShort::@4->print_char#0] -- register_copy - //SEG247 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 + //SEG252 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@4->print_char#0] -- register_copy + //SEG253 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG248 [109] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] + //SEG254 [111] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] b5_from_b4: jmp b5 - //SEG249 testShort::@5 + //SEG255 testShort::@5 b5: - //SEG250 [110] call print_sword - //SEG251 [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] + //SEG256 [112] call print_sword + //SEG257 [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] print_sword_from_b5: - //SEG252 [90] phi (signed word) print_sword::w#5 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 + //SEG258 [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - //SEG253 [111] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] + //SEG259 [113] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] b6_from_b5: jmp b6 - //SEG254 testShort::@6 + //SEG260 testShort::@6 b6: - //SEG255 [112] call print_ln - //SEG256 [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] + //SEG261 [114] call print_ln + //SEG262 [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] print_ln_from_b6: - //SEG257 [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy + //SEG263 [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy jsr print_ln jmp breturn - //SEG258 testShort::@return + //SEG264 testShort::@return breturn: - //SEG259 [113] return + //SEG265 [115] return rts str: .text "short: @" } -//SEG260 testChar +//SEG266 testChar testChar: { .const u = $e .const n = -$e .const s = -$e - //SEG261 [115] call print_str - //SEG262 [68] phi from testChar to print_str [phi:testChar->print_str] + //SEG267 [117] call print_str + //SEG268 [68] phi from testChar to print_str [phi:testChar->print_str] print_str_from_testChar: - //SEG263 [68] phi (byte*) print_char_cursor#150 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 + //SEG269 [68] phi (byte*) print_char_cursor#153 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG264 [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 + //SEG270 [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG265 [116] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] + //SEG271 [118] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] b1_from_testChar: jmp b1 - //SEG266 testChar::@1 + //SEG272 testChar::@1 b1: - //SEG267 [117] call print_byte - //SEG268 [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] + //SEG273 [119] call print_byte + //SEG274 [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] print_byte_from_b1: - //SEG269 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#132 [phi:testChar::@1->print_byte#0] -- register_copy - //SEG270 [56] phi (byte) print_byte::b#4 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 + //SEG275 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#134 [phi:testChar::@1->print_byte#0] -- register_copy + //SEG276 [56] phi (byte) print_byte::b#4 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 ldx #u jsr print_byte - //SEG271 [118] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] + //SEG277 [120] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] b2_from_b1: jmp b2 - //SEG272 testChar::@2 + //SEG278 testChar::@2 b2: - //SEG273 [119] call print_char - //SEG274 [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] + //SEG279 [121] call print_char + //SEG280 [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] print_char_from_b2: - //SEG275 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testChar::@2->print_char#0] -- register_copy - //SEG276 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 + //SEG281 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@2->print_char#0] -- register_copy + //SEG282 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG277 [120] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] + //SEG283 [122] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] b3_from_b2: jmp b3 - //SEG278 testChar::@3 + //SEG284 testChar::@3 b3: - //SEG279 [121] call print_sbyte - //SEG280 [129] phi from testChar::@3 to print_sbyte [phi:testChar::@3->print_sbyte] + //SEG285 [123] call print_sbyte + //SEG286 [131] phi from testChar::@3 to print_sbyte [phi:testChar::@3->print_sbyte] print_sbyte_from_b3: - //SEG281 [129] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::n#0 [phi:testChar::@3->print_sbyte#0] -- vbsxx=vbsc1 + //SEG287 [131] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::n#0 [phi:testChar::@3->print_sbyte#0] -- vbsxx=vbsc1 ldx #n jsr print_sbyte - //SEG282 [122] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] + //SEG288 [124] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] b4_from_b3: jmp b4 - //SEG283 testChar::@4 + //SEG289 testChar::@4 b4: - //SEG284 [123] call print_char - //SEG285 [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] + //SEG290 [125] call print_char + //SEG291 [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] print_char_from_b4: - //SEG286 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testChar::@4->print_char#0] -- register_copy - //SEG287 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 + //SEG292 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@4->print_char#0] -- register_copy + //SEG293 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG288 [124] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] + //SEG294 [126] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] b5_from_b4: jmp b5 - //SEG289 testChar::@5 + //SEG295 testChar::@5 b5: - //SEG290 [125] call print_sbyte - //SEG291 [129] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] + //SEG296 [127] call print_sbyte + //SEG297 [131] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] print_sbyte_from_b5: - //SEG292 [129] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::s#0 [phi:testChar::@5->print_sbyte#0] -- vbsxx=vbsc1 + //SEG298 [131] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::s#0 [phi:testChar::@5->print_sbyte#0] -- vbsxx=vbsc1 ldx #s jsr print_sbyte - //SEG293 [126] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] + //SEG299 [128] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] b6_from_b5: jmp b6 - //SEG294 testChar::@6 + //SEG300 testChar::@6 b6: - //SEG295 [127] call print_ln - //SEG296 [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] + //SEG301 [129] call print_ln + //SEG302 [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] print_ln_from_b6: - //SEG297 [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 + //SEG303 [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp breturn - //SEG298 testChar::@return + //SEG304 testChar::@return breturn: - //SEG299 [128] return + //SEG305 [130] return rts str: .text "char: @" } -//SEG300 print_sbyte +//SEG306 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte register(X) b) print_sbyte: { - //SEG301 [130] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + //SEG307 [132] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1_from_print_sbyte - //SEG302 [131] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG308 [133] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG303 print_sbyte::@3 + //SEG309 print_sbyte::@3 b3: - //SEG304 [132] call print_char - //SEG305 [64] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG310 [134] call print_char + //SEG311 [64] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG306 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG307 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG312 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG313 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG308 [133] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG314 [135] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG309 [133] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG315 [135] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG310 print_sbyte::@2 + //SEG316 print_sbyte::@2 b2: - //SEG311 [134] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 - //SEG312 [135] call print_byte - //SEG313 [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG317 [136] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 + //SEG318 [137] call print_byte + //SEG319 [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG314 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#24 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG315 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG320 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG321 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG316 print_sbyte::@return + //SEG322 print_sbyte::@return breturn: - //SEG317 [136] return + //SEG323 [138] return rts - //SEG318 [137] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG324 [139] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG319 print_sbyte::@1 + //SEG325 print_sbyte::@1 b1: - //SEG320 [138] call print_char - //SEG321 [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG326 [140] call print_char + //SEG327 [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG322 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG323 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG328 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG329 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG324 print_sbyte::@4 + //SEG330 print_sbyte::@4 b4: - //SEG325 [139] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx + //SEG331 [141] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -3991,34 +4045,34 @@ print_sbyte: { tax jmp b2_from_b4 } -//SEG326 print_cls +//SEG332 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $e - //SEG327 [141] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG333 [143] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG328 [141] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG334 [143] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG329 [141] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG335 [143] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG330 [141] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG336 [143] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG331 print_cls::@1 + //SEG337 print_cls::@1 b1: - //SEG332 [142] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG338 [144] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG333 [143] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG339 [145] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG334 [144] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG340 [146] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -4026,12 +4080,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG335 print_cls::@return + //SEG341 print_cls::@return breturn: - //SEG336 [145] return + //SEG342 [147] return rts } -//SEG337 File Data +//SEG343 File Data print_hextab: .text "0123456789abcdef" ASSEMBLER OPTIMIZATIONS @@ -4071,11 +4125,12 @@ Removing instruction jmp b4 Removing instruction jmp b5 Removing instruction jmp b6 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 -Removing instruction jmp b1 +Removing instruction jmp b2 Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 Removing instruction jmp b4 @@ -4104,6 +4159,7 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_print_sdword with b1 Replacing label b1_from_b2 with b1 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_print_sbyte with b1 Replacing label b2_from_b4 with b2 Replacing label b1_from_b1 with b1 @@ -4150,11 +4206,13 @@ Removing instruction b5_from_b4: Removing instruction print_sword_from_b5: Removing instruction b6_from_b5: Removing instruction print_ln_from_b6: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: +Removing instruction print_word_from_b2: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: -Removing instruction print_word_from_b1: +Removing instruction print_char_from_b1: Removing instruction b1_from_testShort: Removing instruction print_word_from_b1: Removing instruction b2_from_b1: @@ -4229,9 +4287,9 @@ Removing instruction b4: Removing instruction b5: Removing instruction b6: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: Removing instruction print_str_from_testShort: Removing instruction b1: Removing instruction b2: @@ -4285,21 +4343,21 @@ FINAL SYMBOL TABLE (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#14 reg byte a 6.0 -(byte) print_char::ch#4 reg byte a 4.0 +(byte) print_char::ch#15 reg byte a 6.0 (byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#6 reg byte a 4.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 11.0 -(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:10 3.583333333333333 -(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:10 6.0 -(byte*) print_char_cursor#140 print_char_cursor zp ZP_WORD:10 3.0 -(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.333333333333333 -(byte*) print_char_cursor#150 print_char_cursor zp ZP_WORD:10 8.0 -(byte*~) print_char_cursor#155 print_char_cursor zp ZP_WORD:10 4.0 -(byte*~) print_char_cursor#156 print_char_cursor zp ZP_WORD:10 4.0 -(byte*~) print_char_cursor#157 print_char_cursor zp ZP_WORD:10 4.0 -(byte*) print_char_cursor#24 print_char_cursor zp ZP_WORD:10 0.5568181818181817 -(byte*) print_char_cursor#90 print_char_cursor zp ZP_WORD:10 16.0 +(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:10 3.583333333333333 +(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:10 6.0 +(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.0 +(byte*) print_char_cursor#146 print_char_cursor zp ZP_WORD:10 3.333333333333333 +(byte*) print_char_cursor#153 print_char_cursor zp ZP_WORD:10 8.0 +(byte*~) print_char_cursor#158 print_char_cursor zp ZP_WORD:10 4.0 +(byte*~) print_char_cursor#159 print_char_cursor zp ZP_WORD:10 4.0 +(byte*~) print_char_cursor#160 print_char_cursor zp ZP_WORD:10 4.0 +(byte*) print_char_cursor#25 print_char_cursor zp ZP_WORD:10 0.5666666666666664 +(byte*) print_char_cursor#92 print_char_cursor zp ZP_WORD:10 17.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -4353,11 +4411,12 @@ FINAL SYMBOL TABLE (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:8 4.0 -(signed word) print_sword::w#5 w zp ZP_WORD:8 1.5 -(signed word) print_sword::w#6 w zp ZP_WORD:8 4.0 +(signed word) print_sword::w#10 w zp ZP_WORD:8 1.0 +(signed word) print_sword::w#7 w zp ZP_WORD:8 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -4429,10 +4488,10 @@ FINAL SYMBOL TABLE zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#2 print_dword::dw#0 ] -zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#6 print_sword::w#5 print_sword::w#0 ] +zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] reg byte x [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -reg byte a [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ] -zp ZP_WORD:10 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] +reg byte a [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] +zp ZP_WORD:10 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] zp ZP_WORD:12 [ print_str::str#5 print_str::str#7 print_str::str#0 ] reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] @@ -4441,7 +4500,7 @@ reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 2157 +Score: 2168 //SEG0 File Comments // Tests the different standard C types @@ -4462,12 +4521,12 @@ Score: 2157 //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [140] phi from main to print_cls [phi:main->print_cls] + //SEG12 [142] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 main::@1 //SEG15 [7] call testChar - //SEG16 [114] phi from main::@1 to testChar [phi:main::@1->testChar] + //SEG16 [116] phi from main::@1 to testChar [phi:main::@1->testChar] jsr testChar //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG18 main::@2 @@ -4490,14 +4549,14 @@ testLong: { .const u = $222e0 .const n = -$222e0 .const s = -$222e0 - //SEG29 [15] (byte*~) print_char_cursor#156 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG29 [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG30 [16] call print_str //SEG31 [68] phi from testLong to print_str [phi:testLong->print_str] - //SEG32 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#156 [phi:testLong->print_str#0] -- register_copy + //SEG32 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#159 [phi:testLong->print_str#0] -- register_copy //SEG33 [68] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 lda #print_dword] - //SEG38 [44] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:testLong::@1->print_dword#0] -- register_copy + //SEG38 [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:testLong::@1->print_dword#0] -- register_copy //SEG39 [44] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 lda #print_char] - //SEG44 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testLong::@2->print_char#0] -- register_copy - //SEG45 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 + //SEG44 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@2->print_char#0] -- register_copy + //SEG45 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG46 [21] phi from testLong::@2 to testLong::@3 [phi:testLong::@2->testLong::@3] @@ -4545,8 +4604,8 @@ testLong: { //SEG52 testLong::@4 //SEG53 [24] call print_char //SEG54 [64] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] - //SEG55 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testLong::@4->print_char#0] -- register_copy - //SEG56 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 + //SEG55 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@4->print_char#0] -- register_copy + //SEG56 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG57 [25] phi from testLong::@4 to testLong::@5 [phi:testLong::@4->testLong::@5] @@ -4589,7 +4648,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG74 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG74 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -4614,8 +4673,8 @@ print_sdword: { //SEG80 print_sdword::@2 //SEG81 [38] call print_char //SEG82 [64] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - //SEG83 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG84 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG83 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG84 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char //SEG85 print_sdword::@3 @@ -4644,7 +4703,7 @@ print_sdword: { //SEG90 [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 //SEG91 [42] call print_dword //SEG92 [44] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - //SEG93 [44] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#24 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG93 [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#25 [phi:print_sdword::@1->print_dword#0] -- register_copy //SEG94 [44] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword //SEG95 print_sdword::@return @@ -4663,7 +4722,7 @@ print_dword: { sta print_word.w+1 //SEG99 [46] call print_word //SEG100 [50] phi from print_dword to print_word [phi:print_dword->print_word] - //SEG101 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#140 [phi:print_dword->print_word#0] -- register_copy + //SEG101 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#143 [phi:print_dword->print_word#0] -- register_copy //SEG102 [50] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word //SEG103 print_dword::@1 @@ -4674,7 +4733,7 @@ print_dword: { sta print_word.w+1 //SEG105 [48] call print_word //SEG106 [50] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - //SEG107 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#24 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG107 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_dword::@1->print_word#0] -- register_copy //SEG108 [50] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word //SEG109 print_dword::@return @@ -4691,7 +4750,7 @@ print_word: { tax //SEG113 [52] call print_byte //SEG114 [56] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG115 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy + //SEG115 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy //SEG116 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte //SEG117 print_word::@1 @@ -4700,7 +4759,7 @@ print_word: { tax //SEG119 [54] call print_byte //SEG120 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG121 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#24 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG121 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_word::@1->print_byte#0] -- register_copy //SEG122 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte //SEG123 print_word::@return @@ -4717,24 +4776,24 @@ print_byte: { lsr lsr lsr - //SEG127 [58] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG127 [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG128 [59] call print_char //SEG129 [64] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG130 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy - //SEG131 [64] phi (byte) print_char::ch#14 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy + //SEG130 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#146 [phi:print_byte->print_char#0] -- register_copy + //SEG131 [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#5 [phi:print_byte->print_char#1] -- register_copy jsr print_char //SEG132 print_byte::@1 //SEG133 [60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - //SEG134 [61] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG134 [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x //SEG135 [62] call print_char //SEG136 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG137 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG138 [64] phi (byte) print_char::ch#14 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG137 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG138 [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#6 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char //SEG139 print_byte::@return //SEG140 [63] return @@ -4744,10 +4803,10 @@ print_byte: { // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG142 [65] *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14 -- _deref_pbuz1=vbuaa + //SEG142 [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG143 [66] (byte*) print_char_cursor#24 ← ++ (byte*) print_char_cursor#90 -- pbuz1=_inc_pbuz1 + //SEG143 [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -4762,7 +4821,7 @@ print_char: { print_str: { .label str = $c //SEG147 [69] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG148 [69] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#150 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG148 [69] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#153 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG149 [69] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy //SEG150 print_str::@1 b1: @@ -4776,11 +4835,11 @@ print_str: { rts //SEG154 print_str::@2 b2: - //SEG155 [72] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 + //SEG155 [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG156 [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG156 [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -4797,14 +4856,14 @@ testInt: { .const u = $578 .const n = -$578 .const s = -$578 - //SEG159 [75] (byte*~) print_char_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG159 [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG160 [76] call print_str //SEG161 [68] phi from testInt to print_str [phi:testInt->print_str] - //SEG162 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#155 [phi:testInt->print_str#0] -- register_copy + //SEG162 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#158 [phi:testInt->print_str#0] -- register_copy //SEG163 [68] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 lda #print_word] - //SEG168 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:testInt::@1->print_word#0] -- register_copy + //SEG168 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testInt::@1->print_word#0] -- register_copy //SEG169 [50] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 lda #print_char] - //SEG174 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testInt::@2->print_char#0] -- register_copy - //SEG175 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 + //SEG174 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@2->print_char#0] -- register_copy + //SEG175 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG176 [81] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3] //SEG177 testInt::@3 //SEG178 [82] call print_sword //SEG179 [90] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] - //SEG180 [90] phi (signed word) print_sword::w#5 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 + //SEG180 [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 lda #n @@ -4844,15 +4903,15 @@ testInt: { //SEG182 testInt::@4 //SEG183 [84] call print_char //SEG184 [64] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] - //SEG185 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testInt::@4->print_char#0] -- register_copy - //SEG186 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 + //SEG185 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@4->print_char#0] -- register_copy + //SEG186 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG187 [85] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5] //SEG188 testInt::@5 //SEG189 [86] call print_sword //SEG190 [90] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] - //SEG191 [90] phi (signed word) print_sword::w#5 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 + //SEG191 [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 lda #s @@ -4874,19 +4933,41 @@ testInt: { // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - //SEG200 [91] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG200 [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG201 [92] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG202 print_sword::@2 + bmi b1 + //SEG201 [92] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG202 print_sword::@3 //SEG203 [93] call print_char - //SEG204 [64] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG205 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG206 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG204 [64] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG205 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG206 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG207 [94] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG208 [94] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG209 print_sword::@2 + b2: + //SEG210 [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + //SEG211 [96] call print_word + //SEG212 [50] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + //SEG213 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG214 [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + //SEG215 print_sword::@return + //SEG216 [97] return + rts + //SEG217 [98] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG218 print_sword::@1 + b1: + //SEG219 [99] call print_char + //SEG220 [64] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG221 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG222 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG207 print_sword::@3 - //SEG208 [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + //SEG223 print_sword::@4 + //SEG224 [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -4894,207 +4975,195 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG209 [95] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG210 [95] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG211 print_sword::@1 - b1: - //SEG212 [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 - //SEG213 [97] call print_word - //SEG214 [50] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG215 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#24 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG216 [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - //SEG217 print_sword::@return - //SEG218 [98] return - rts + jmp b2 } -//SEG219 testShort +//SEG225 testShort testShort: { .const u = $578 .const n = -$578 .const s = -$578 - //SEG220 [99] (byte*~) print_char_cursor#157 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG226 [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG221 [100] call print_str - //SEG222 [68] phi from testShort to print_str [phi:testShort->print_str] - //SEG223 [68] phi (byte*) print_char_cursor#150 = (byte*~) print_char_cursor#157 [phi:testShort->print_str#0] -- register_copy - //SEG224 [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 + //SEG227 [102] call print_str + //SEG228 [68] phi from testShort to print_str [phi:testShort->print_str] + //SEG229 [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#160 [phi:testShort->print_str#0] -- register_copy + //SEG230 [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG225 [101] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] - //SEG226 testShort::@1 - //SEG227 [102] call print_word - //SEG228 [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] - //SEG229 [50] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:testShort::@1->print_word#0] -- register_copy - //SEG230 [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 + //SEG231 [103] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] + //SEG232 testShort::@1 + //SEG233 [104] call print_word + //SEG234 [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] + //SEG235 [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testShort::@1->print_word#0] -- register_copy + //SEG236 [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - //SEG231 [103] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] - //SEG232 testShort::@2 - //SEG233 [104] call print_char - //SEG234 [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] - //SEG235 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testShort::@2->print_char#0] -- register_copy - //SEG236 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 + //SEG237 [105] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] + //SEG238 testShort::@2 + //SEG239 [106] call print_char + //SEG240 [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] + //SEG241 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@2->print_char#0] -- register_copy + //SEG242 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG237 [105] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] - //SEG238 testShort::@3 - //SEG239 [106] call print_sword - //SEG240 [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] - //SEG241 [90] phi (signed word) print_sword::w#5 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 + //SEG243 [107] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] + //SEG244 testShort::@3 + //SEG245 [108] call print_sword + //SEG246 [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] + //SEG247 [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - //SEG242 [107] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] - //SEG243 testShort::@4 - //SEG244 [108] call print_char - //SEG245 [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] - //SEG246 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testShort::@4->print_char#0] -- register_copy - //SEG247 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 + //SEG248 [109] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] + //SEG249 testShort::@4 + //SEG250 [110] call print_char + //SEG251 [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] + //SEG252 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@4->print_char#0] -- register_copy + //SEG253 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG248 [109] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] - //SEG249 testShort::@5 - //SEG250 [110] call print_sword - //SEG251 [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] - //SEG252 [90] phi (signed word) print_sword::w#5 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 + //SEG254 [111] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] + //SEG255 testShort::@5 + //SEG256 [112] call print_sword + //SEG257 [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] + //SEG258 [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - //SEG253 [111] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] - //SEG254 testShort::@6 - //SEG255 [112] call print_ln - //SEG256 [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] - //SEG257 [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy + //SEG259 [113] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] + //SEG260 testShort::@6 + //SEG261 [114] call print_ln + //SEG262 [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] + //SEG263 [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy jsr print_ln - //SEG258 testShort::@return - //SEG259 [113] return + //SEG264 testShort::@return + //SEG265 [115] return rts str: .text "short: @" } -//SEG260 testChar +//SEG266 testChar testChar: { .const u = $e .const n = -$e .const s = -$e - //SEG261 [115] call print_str - //SEG262 [68] phi from testChar to print_str [phi:testChar->print_str] - //SEG263 [68] phi (byte*) print_char_cursor#150 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 + //SEG267 [117] call print_str + //SEG268 [68] phi from testChar to print_str [phi:testChar->print_str] + //SEG269 [68] phi (byte*) print_char_cursor#153 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG264 [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 + //SEG270 [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG265 [116] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] - //SEG266 testChar::@1 - //SEG267 [117] call print_byte - //SEG268 [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] - //SEG269 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#132 [phi:testChar::@1->print_byte#0] -- register_copy - //SEG270 [56] phi (byte) print_byte::b#4 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 + //SEG271 [118] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] + //SEG272 testChar::@1 + //SEG273 [119] call print_byte + //SEG274 [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] + //SEG275 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#134 [phi:testChar::@1->print_byte#0] -- register_copy + //SEG276 [56] phi (byte) print_byte::b#4 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 ldx #u jsr print_byte - //SEG271 [118] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] - //SEG272 testChar::@2 - //SEG273 [119] call print_char - //SEG274 [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] - //SEG275 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testChar::@2->print_char#0] -- register_copy - //SEG276 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 + //SEG277 [120] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] + //SEG278 testChar::@2 + //SEG279 [121] call print_char + //SEG280 [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] + //SEG281 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@2->print_char#0] -- register_copy + //SEG282 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG277 [120] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] - //SEG278 testChar::@3 - //SEG279 [121] call print_sbyte - //SEG280 [129] phi from testChar::@3 to print_sbyte [phi:testChar::@3->print_sbyte] - //SEG281 [129] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::n#0 [phi:testChar::@3->print_sbyte#0] -- vbsxx=vbsc1 + //SEG283 [122] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] + //SEG284 testChar::@3 + //SEG285 [123] call print_sbyte + //SEG286 [131] phi from testChar::@3 to print_sbyte [phi:testChar::@3->print_sbyte] + //SEG287 [131] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::n#0 [phi:testChar::@3->print_sbyte#0] -- vbsxx=vbsc1 ldx #n jsr print_sbyte - //SEG282 [122] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] - //SEG283 testChar::@4 - //SEG284 [123] call print_char - //SEG285 [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] - //SEG286 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:testChar::@4->print_char#0] -- register_copy - //SEG287 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 + //SEG288 [124] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] + //SEG289 testChar::@4 + //SEG290 [125] call print_char + //SEG291 [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] + //SEG292 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@4->print_char#0] -- register_copy + //SEG293 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG288 [124] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] - //SEG289 testChar::@5 - //SEG290 [125] call print_sbyte - //SEG291 [129] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] - //SEG292 [129] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::s#0 [phi:testChar::@5->print_sbyte#0] -- vbsxx=vbsc1 + //SEG294 [126] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] + //SEG295 testChar::@5 + //SEG296 [127] call print_sbyte + //SEG297 [131] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] + //SEG298 [131] phi (signed byte) print_sbyte::b#3 = (const signed byte) testChar::s#0 [phi:testChar::@5->print_sbyte#0] -- vbsxx=vbsc1 ldx #s jsr print_sbyte - //SEG293 [126] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] - //SEG294 testChar::@6 - //SEG295 [127] call print_ln - //SEG296 [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] - //SEG297 [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 + //SEG299 [128] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] + //SEG300 testChar::@6 + //SEG301 [129] call print_ln + //SEG302 [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] + //SEG303 [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG298 testChar::@return - //SEG299 [128] return + //SEG304 testChar::@return + //SEG305 [130] return rts str: .text "char: @" } -//SEG300 print_sbyte +//SEG306 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte register(X) b) print_sbyte: { - //SEG301 [130] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + //SEG307 [132] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1 - //SEG302 [131] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG303 print_sbyte::@3 - //SEG304 [132] call print_char - //SEG305 [64] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG306 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG307 [64] phi (byte) print_char::ch#14 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG308 [133] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG309 print_sbyte::@3 + //SEG310 [134] call print_char + //SEG311 [64] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG312 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG313 [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG308 [133] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] - //SEG309 [133] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy - //SEG310 print_sbyte::@2 + //SEG314 [135] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG315 [135] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG316 print_sbyte::@2 b2: - //SEG311 [134] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 - //SEG312 [135] call print_byte - //SEG313 [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG314 [56] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#24 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG315 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG317 [136] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 + //SEG318 [137] call print_byte + //SEG319 [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG320 [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG321 [56] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG316 print_sbyte::@return - //SEG317 [136] return + //SEG322 print_sbyte::@return + //SEG323 [138] return rts - //SEG318 [137] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG319 print_sbyte::@1 + //SEG324 [139] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG325 print_sbyte::@1 b1: - //SEG320 [138] call print_char - //SEG321 [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG322 [64] phi (byte*) print_char_cursor#90 = (byte*) print_char_cursor#24 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG323 [64] phi (byte) print_char::ch#14 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG326 [140] call print_char + //SEG327 [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG328 [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG329 [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG324 print_sbyte::@4 - //SEG325 [139] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx + //SEG330 print_sbyte::@4 + //SEG331 [141] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -5102,40 +5171,40 @@ print_sbyte: { tax jmp b2 } -//SEG326 print_cls +//SEG332 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $e - //SEG327 [141] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG328 [141] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG333 [143] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG334 [143] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG329 [141] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG330 [141] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG331 print_cls::@1 + //SEG335 [143] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG336 [143] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG337 print_cls::@1 b1: - //SEG332 [142] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG338 [144] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG333 [143] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG339 [145] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG334 [144] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG340 [146] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG335 print_cls::@return - //SEG336 [145] return + //SEG341 print_cls::@return + //SEG342 [147] return rts } -//SEG337 File Data +//SEG343 File Data print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/c-types.sym b/src/test/ref/c-types.sym index 520df6b3a..0f8a79904 100644 --- a/src/test/ref/c-types.sym +++ b/src/test/ref/c-types.sym @@ -20,21 +20,21 @@ (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#14 reg byte a 6.0 -(byte) print_char::ch#4 reg byte a 4.0 +(byte) print_char::ch#15 reg byte a 6.0 (byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#6 reg byte a 4.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 11.0 -(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:10 3.583333333333333 -(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:10 6.0 -(byte*) print_char_cursor#140 print_char_cursor zp ZP_WORD:10 3.0 -(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.333333333333333 -(byte*) print_char_cursor#150 print_char_cursor zp ZP_WORD:10 8.0 -(byte*~) print_char_cursor#155 print_char_cursor zp ZP_WORD:10 4.0 -(byte*~) print_char_cursor#156 print_char_cursor zp ZP_WORD:10 4.0 -(byte*~) print_char_cursor#157 print_char_cursor zp ZP_WORD:10 4.0 -(byte*) print_char_cursor#24 print_char_cursor zp ZP_WORD:10 0.5568181818181817 -(byte*) print_char_cursor#90 print_char_cursor zp ZP_WORD:10 16.0 +(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:10 3.583333333333333 +(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:10 6.0 +(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.0 +(byte*) print_char_cursor#146 print_char_cursor zp ZP_WORD:10 3.333333333333333 +(byte*) print_char_cursor#153 print_char_cursor zp ZP_WORD:10 8.0 +(byte*~) print_char_cursor#158 print_char_cursor zp ZP_WORD:10 4.0 +(byte*~) print_char_cursor#159 print_char_cursor zp ZP_WORD:10 4.0 +(byte*~) print_char_cursor#160 print_char_cursor zp ZP_WORD:10 4.0 +(byte*) print_char_cursor#25 print_char_cursor zp ZP_WORD:10 0.5666666666666664 +(byte*) print_char_cursor#92 print_char_cursor zp ZP_WORD:10 17.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -88,11 +88,12 @@ (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:8 4.0 -(signed word) print_sword::w#5 w zp ZP_WORD:8 1.5 -(signed word) print_sword::w#6 w zp ZP_WORD:8 4.0 +(signed word) print_sword::w#10 w zp ZP_WORD:8 1.0 +(signed word) print_sword::w#7 w zp ZP_WORD:8 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -164,10 +165,10 @@ zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#2 print_dword::dw#0 ] -zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#6 print_sword::w#5 print_sword::w#0 ] +zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] reg byte x [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -reg byte a [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ] -zp ZP_WORD:10 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] +reg byte a [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] +zp ZP_WORD:10 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] zp ZP_WORD:12 [ print_str::str#5 print_str::str#7 print_str::str#0 ] reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ] zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] diff --git a/src/test/ref/cordic-atan2-16-ref.asm b/src/test/ref/cordic-atan2-16-ref.asm index b894d2d16..e0b9e40ed 100644 --- a/src/test/ref/cordic-atan2-16-ref.asm +++ b/src/test/ref/cordic-atan2-16-ref.asm @@ -456,7 +456,7 @@ init_font_hex: { print_hextab: .text "0123456789abcdef" .pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16" .for (var i=0; i=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [32] phi() [33] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [35] (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 ) - [35] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [37] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [34] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [36] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [38] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [37] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [40] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [42] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [43] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [44] (byte*) print_char_cursor#44 ← phi( print_word/(byte*) print_char_cursor#41 print_word::@1/(byte*) print_char_cursor#12 ) - [44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [47] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [50] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [51] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - [52] (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#44 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 ) - [52] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 - [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 +print_sword::@1: scope:[print_sword] from print_sword + [38] phi() + [39] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [41] (byte*) print_char_cursor#34 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#49 print_sword::@3/(byte*) print_char_cursor#49 ) + [41] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 + [43] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#34 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [55] return + [44] return + to:@return +print_word: scope:[print_word] from print_sword::@2 + [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [46] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [48] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [49] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [50] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [52] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [53] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [55] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [56] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [57] return to:@return print_cls: scope:[print_cls] from main::@2 - [56] phi() + [58] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [57] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [58] *((byte*) print_cls::sc#2) ← (byte) ' ' - [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [60] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [59] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [60] *((byte*) print_cls::sc#2) ← (byte) ' ' + [61] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [62] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [61] return + [63] return to:@return sub: scope:[sub] from main::@1 main::@4 main::@5 - [62] (byte) sub::s#3 ← phi( main::@1/(byte) $80 main::@4/(byte) $40 main::@5/(byte) $40 ) - [62] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 ) - [63] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 - [64] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 + [64] (byte) sub::s#3 ← phi( main::@1/(byte) $80 main::@4/(byte) $40 main::@5/(byte) $40 ) + [64] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 ) + [65] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 + [66] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 to:sub::@return sub::@return: scope:[sub] from sub - [65] return + [67] return to:@return diff --git a/src/test/ref/signed-indexed-subtract.log b/src/test/ref/signed-indexed-subtract.log index 0fadfc3a7..fa9c8f16a 100644 --- a/src/test/ref/signed-indexed-subtract.log +++ b/src/test/ref/signed-indexed-subtract.log @@ -7,6 +7,7 @@ Culled Empty Block (label) @2 Culled Empty Block (label) @3 Culled Empty Block (label) @4 Culled Empty Block (label) @5 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @6 Culled Empty Block (label) @7 Culled Empty Block (label) @8 @@ -29,15 +30,15 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@12 print_ln: scope:[print_ln] from main::@9 - (byte*) print_char_cursor#40 ← phi( main::@9/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#42 ← phi( main::@9/(byte*) print_char_cursor#18 ) (byte*) print_line_cursor#17 ← phi( main::@9/(byte*) print_line_cursor#19 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#21 ← phi( print_ln/(byte*) print_char_cursor#40 print_ln::@1/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#22 ← phi( print_ln/(byte*) print_char_cursor#42 print_ln::@1/(byte*) print_char_cursor#22 ) (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#17 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#9 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#21 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#22 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -45,111 +46,121 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#1 ← (byte*) print_line_cursor#10 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#22 ← phi( print_ln::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#23 ← phi( print_ln::@2/(byte*) print_char_cursor#1 ) (byte*) print_line_cursor#11 ← phi( print_ln::@2/(byte*) print_line_cursor#10 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#11 - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#22 + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#23 return to:@return print_sword: scope:[print_sword] from main::@3 - (byte*) print_char_cursor#48 ← phi( main::@3/(byte*) print_char_cursor#46 ) + (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 ) (signed word) print_sword::w#2 ← phi( main::@3/(signed word) print_sword::w#1 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#48 print_sword::@4/(byte*) print_char_cursor#4 ) - (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#2 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#3 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#23 ← phi( print_sword::@1/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#23 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#2 ) - (byte*) print_char_cursor#42 ← phi( print_sword/(byte*) print_char_cursor#48 ) + (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#51 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#4 ← phi( print_sword::@2/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#24 ← phi( print_sword::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#24 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#3 ← phi( print_sword::@1/(signed word) print_sword::w#5 ) + (byte*) print_char_cursor#24 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#24 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#3 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#25 ← phi( print_sword::@3/(byte*) print_char_cursor#3 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#25 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#7 ← phi( print_sword/(signed word) print_sword::w#2 ) + (byte*) print_char_cursor#44 ← phi( print_sword/(byte*) print_char_cursor#51 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#6 ← phi( print_sword::@3/(signed word) print_sword::w#7 ) + (byte*) print_char_cursor#25 ← phi( print_sword::@3/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#25 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#45 ← phi( print_sword::@5/(byte*) print_char_cursor#3 print_sword::@6/(byte*) print_char_cursor#4 ) + (signed word) print_sword::w#4 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#6 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#4 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#26 ← phi( print_sword::@2/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#26 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#27 ← phi( print_sword::@7/(byte*) print_char_cursor#5 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#27 return to:@return -print_word: scope:[print_word] from print_sword::@1 - (byte*) print_char_cursor#43 ← phi( print_sword::@1/(byte*) print_char_cursor#41 ) - (word) print_word::w#1 ← phi( print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from print_sword::@2 + (byte*) print_char_cursor#46 ← phi( print_sword::@2/(byte*) print_char_cursor#45 ) + (word) print_word::w#1 ← phi( print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#1 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#2 ← phi( print_word/(word) print_word::w#1 ) - (byte*) print_char_cursor#26 ← phi( print_word/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#26 + (byte*) print_char_cursor#28 ← phi( print_word/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#28 (byte~) print_word::$2 ← < (word) print_word::w#2 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#27 ← phi( print_word::@1/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#27 + (byte*) print_char_cursor#29 ← phi( print_word::@1/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#28 ← phi( print_word::@2/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#28 + (byte*) print_char_cursor#30 ← phi( print_word::@2/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#30 return to:@return @12: scope:[] from @begin (byte*) print_screen#12 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#51 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#54 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#24 ← phi( @begin/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@19 print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) print_char_cursor#44 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#47 ← phi( print_word/(byte*) print_char_cursor#46 print_word::@1/(byte*) print_char_cursor#7 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4 - (byte) print_char::ch#1 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char 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*) print_char_cursor#29 ← phi( print_byte/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#29 + (byte*) print_char_cursor#31 ← phi( print_byte/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#31 (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f - (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#30 ← phi( print_byte::@1/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#30 + (byte*) print_char_cursor#32 ← phi( print_byte::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#32 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#31 ← phi( print_byte::@2/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#31 + (byte*) print_char_cursor#33 ← phi( print_byte::@2/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#33 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#44 print_byte::@1/(byte*) print_char_cursor#9 print_sword::@2/(byte*) print_char_cursor#42 ) - (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 - (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#34 ← phi( print_byte/(byte*) print_char_cursor#47 print_byte::@1/(byte*) print_char_cursor#10 print_sword::@1/(byte*) print_char_cursor#43 print_sword::@3/(byte*) print_char_cursor#44 ) + (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 + (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#34 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#33 ← phi( print_char/(byte*) print_char_cursor#12 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#33 + (byte*) print_char_cursor#35 ← phi( print_char/(byte*) print_char_cursor#13 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#35 return to:@return print_cls: scope:[print_cls] from main::@2 @@ -168,29 +179,29 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#14 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#15 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#34 ← phi( print_cls::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#36 ← phi( print_cls::@2/(byte*) print_char_cursor#15 ) (byte*) print_line_cursor#12 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#12 - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#34 + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#36 return to:@return @19: scope:[] from @12 (byte*) print_screen#11 ← phi( @12/(byte*) print_screen#12 ) - (byte*) print_char_cursor#50 ← phi( @12/(byte*) print_char_cursor#51 ) + (byte*) print_char_cursor#53 ← phi( @12/(byte*) print_char_cursor#54 ) (byte*) print_line_cursor#23 ← phi( @12/(byte*) print_line_cursor#24 ) (signed word[]) words#0 ← { (number) -$6000, (number) -$600, (number) -$60, (number) -6, (number) 0, (number) 6, (number) $60, (number) $600, (number) $6000 } to:@21 main: scope:[main] from @21 - (byte*) print_char_cursor#55 ← phi( @21/(byte*) print_char_cursor#47 ) + (byte*) print_char_cursor#58 ← phi( @21/(byte*) print_char_cursor#50 ) (byte*) print_line_cursor#28 ← phi( @21/(byte*) print_line_cursor#20 ) (byte*) print_screen#9 ← phi( @21/(byte*) print_screen#10 ) (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@7 - (byte*) print_char_cursor#54 ← phi( main/(byte*) print_char_cursor#55 main::@7/(byte*) print_char_cursor#49 ) + (byte*) print_char_cursor#57 ← phi( main/(byte*) print_char_cursor#58 main::@7/(byte*) print_char_cursor#52 ) (byte*) print_line_cursor#27 ← phi( main/(byte*) print_line_cursor#28 main::@7/(byte*) print_line_cursor#21 ) (byte*) print_screen#8 ← phi( main/(byte*) print_screen#9 main::@7/(byte*) print_screen#5 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@7/(byte) main::i#1 ) @@ -199,7 +210,7 @@ main::@1: scope:[main] from main main::@7 call sub to:main::@5 main::@5: scope:[main] from main::@1 - (byte*) print_char_cursor#53 ← phi( main::@1/(byte*) print_char_cursor#54 ) + (byte*) print_char_cursor#56 ← phi( main::@1/(byte*) print_char_cursor#57 ) (byte*) print_line_cursor#26 ← phi( main::@1/(byte*) print_line_cursor#27 ) (byte*) print_screen#7 ← phi( main::@1/(byte*) print_screen#8 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) @@ -208,7 +219,7 @@ main::@5: scope:[main] from main::@1 call sub to:main::@6 main::@6: scope:[main] from main::@5 - (byte*) print_char_cursor#52 ← phi( main::@5/(byte*) print_char_cursor#53 ) + (byte*) print_char_cursor#55 ← phi( main::@5/(byte*) print_char_cursor#56 ) (byte*) print_line_cursor#25 ← phi( main::@5/(byte*) print_line_cursor#26 ) (byte*) print_screen#6 ← phi( main::@5/(byte*) print_screen#7 ) (byte) main::i#4 ← phi( main::@5/(byte) main::i#3 ) @@ -217,7 +228,7 @@ main::@6: scope:[main] from main::@5 call sub to:main::@7 main::@7: scope:[main] from main::@6 - (byte*) print_char_cursor#49 ← phi( main::@6/(byte*) print_char_cursor#52 ) + (byte*) print_char_cursor#52 ← phi( main::@6/(byte*) print_char_cursor#55 ) (byte*) print_line_cursor#21 ← phi( main::@6/(byte*) print_line_cursor#25 ) (byte*) print_screen#5 ← phi( main::@6/(byte*) print_screen#6 ) (byte) main::i#5 ← phi( main::@6/(byte) main::i#4 ) @@ -226,21 +237,21 @@ main::@7: scope:[main] from main::@6 if((bool~) main::$4) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@7 - (byte*) print_char_cursor#45 ← phi( main::@7/(byte*) print_char_cursor#49 ) + (byte*) print_char_cursor#48 ← phi( main::@7/(byte*) print_char_cursor#52 ) (byte*) print_line_cursor#18 ← phi( main::@7/(byte*) print_line_cursor#21 ) (byte*) print_screen#4 ← phi( main::@7/(byte*) print_screen#5 ) call print_cls to:main::@8 main::@8: scope:[main] from main::@2 - (byte*) print_char_cursor#35 ← phi( main::@2/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#37 ← phi( main::@2/(byte*) print_char_cursor#16 ) (byte*) print_line_cursor#13 ← phi( main::@2/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#13 - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#35 + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#37 (byte) main::j#0 ← (byte) 0 to:main::@3 main::@3: scope:[main] from main::@10 main::@8 (byte*) print_line_cursor#22 ← phi( main::@10/(byte*) print_line_cursor#6 main::@8/(byte*) print_line_cursor#5 ) - (byte*) print_char_cursor#46 ← phi( main::@10/(byte*) print_char_cursor#18 main::@8/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#49 ← phi( main::@10/(byte*) print_char_cursor#19 main::@8/(byte*) print_char_cursor#17 ) (byte) main::j#2 ← phi( main::@10/(byte) main::j#1 main::@8/(byte) main::j#0 ) (byte~) main::$8 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD (signed word) print_sword::w#1 ← *((signed word[]) words#0 + (byte~) main::$8) @@ -249,25 +260,25 @@ main::@3: scope:[main] from main::@10 main::@8 main::@9: scope:[main] from main::@3 (byte) main::j#4 ← phi( main::@3/(byte) main::j#2 ) (byte*) print_line_cursor#19 ← phi( main::@3/(byte*) print_line_cursor#22 ) - (byte*) print_char_cursor#36 ← phi( main::@3/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#36 + (byte*) print_char_cursor#38 ← phi( main::@3/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#38 call print_ln to:main::@10 main::@10: scope:[main] from main::@9 (byte) main::j#3 ← phi( main::@9/(byte) main::j#4 ) - (byte*) print_char_cursor#37 ← phi( main::@9/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#39 ← phi( main::@9/(byte*) print_char_cursor#2 ) (byte*) print_line_cursor#14 ← phi( main::@9/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#14 - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#37 + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#39 (byte) main::j#1 ← (byte) main::j#3 + rangenext(0,8) (bool~) main::$7 ← (byte) main::j#1 != rangelast(0,8) if((bool~) main::$7) goto main::@3 to:main::@return main::@return: scope:[main] from main::@10 - (byte*) print_char_cursor#38 ← phi( main::@10/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#40 ← phi( main::@10/(byte*) print_char_cursor#19 ) (byte*) print_line_cursor#15 ← phi( main::@10/(byte*) print_line_cursor#6 ) (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#15 - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#38 + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#40 return to:@return sub: scope:[sub] from main::@1 main::@5 main::@6 @@ -281,15 +292,15 @@ sub::@return: scope:[sub] from sub to:@return @21: scope:[] from @19 (byte*) print_screen#10 ← phi( @19/(byte*) print_screen#11 ) - (byte*) print_char_cursor#47 ← phi( @19/(byte*) print_char_cursor#50 ) + (byte*) print_char_cursor#50 ← phi( @19/(byte*) print_char_cursor#53 ) (byte*) print_line_cursor#20 ← phi( @19/(byte*) print_line_cursor#23 ) call main to:@22 @22: scope:[] from @21 - (byte*) print_char_cursor#39 ← phi( @21/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#41 ← phi( @21/(byte*) print_char_cursor#20 ) (byte*) print_line_cursor#16 ← phi( @21/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#16 - (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#39 + (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41 to:@end @end: scope:[] from @22 @@ -347,6 +358,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#1 (byte) print_char::ch#2 (byte) print_char::ch#3 +(byte) print_char::ch#4 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -400,6 +412,9 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#53 (byte*) print_char_cursor#54 (byte*) print_char_cursor#55 +(byte*) print_char_cursor#56 +(byte*) print_char_cursor#57 +(byte*) print_char_cursor#58 (byte*) print_char_cursor#6 (byte*) print_char_cursor#7 (byte*) print_char_cursor#8 @@ -468,13 +483,14 @@ SYMBOL TABLE SSA (byte*) print_screen#9 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -483,6 +499,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#3 (signed word) print_sword::w#4 (signed word) print_sword::w#5 +(signed word) print_sword::w#6 +(signed word) print_sword::w#7 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -522,7 +540,7 @@ Successful SSA optimization PassNAddNumberTypeConversions Adding number conversion cast (signed word) to elements in (signed word[]) words#0 ← { (signed word)(number) -$6000, (signed word)(number) -$600, (signed word)(number) -$60, (signed word)(number) -6, (signed word)(number) 0, (signed word)(number) 6, (signed word)(number) $60, (signed word)(number) $600, (signed word)(number) $6000 } Successful SSA optimization PassNAddArrayNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#3 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#4 Inlining cast (byte) sub::s#0 ← (unumber)(number) $80 Inlining cast (byte) sub::s#1 ← (unumber)(number) $40 Inlining cast (byte) sub::s#2 ← (unumber)(number) $40 @@ -556,85 +574,90 @@ Finalized unsigned number type (byte) $40 Finalized unsigned number type (byte) $40 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f -Inversing boolean not [17] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (signed byte) 0 from [16] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (signed byte) 0 -Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#51 (byte*) print_screen#12 (byte*) print_line_cursor#23 (byte*) print_char_cursor#50 (byte*) print_screen#11 (byte*) print_line_cursor#20 (byte*) print_char_cursor#47 (byte*) print_screen#10 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#1 (byte*) print_line_cursor#11 (byte*) print_char_cursor#22 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#3 (byte*) print_char_cursor#25 (byte*) print_char_cursor#5 -Alias (byte*) print_char_cursor#42 = (byte*) print_char_cursor#48 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#4 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#4 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#54 (byte*) print_screen#12 (byte*) print_line_cursor#23 (byte*) print_char_cursor#53 (byte*) print_screen#11 (byte*) print_line_cursor#20 (byte*) print_char_cursor#50 (byte*) print_screen#10 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#1 (byte*) print_line_cursor#11 (byte*) print_char_cursor#23 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 +Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#44 +Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 +Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#3 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 +Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#4 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#27 (byte*) print_char_cursor#6 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#6 +Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#7 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#28 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#30 (byte*) print_char_cursor#9 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#31 (byte*) print_char_cursor#11 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#13 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#14 (byte*) print_char_cursor#34 (byte*) print_line_cursor#4 (byte*) print_char_cursor#15 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#31 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#32 (byte*) print_char_cursor#33 (byte*) print_char_cursor#12 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#14 +Alias (byte*) print_line_cursor#12 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#15 (byte*) print_char_cursor#36 (byte*) print_line_cursor#4 (byte*) print_char_cursor#16 Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 (byte) main::i#5 Alias (byte*) print_screen#4 = (byte*) print_screen#7 (byte*) print_screen#8 (byte*) print_screen#6 (byte*) print_screen#5 Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#27 (byte*) print_line_cursor#25 (byte*) print_line_cursor#21 -Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#54 (byte*) print_char_cursor#52 (byte*) print_char_cursor#49 +Alias (byte*) print_char_cursor#48 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#57 (byte*) print_char_cursor#55 (byte*) print_char_cursor#52 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#35 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 Alias (byte) main::j#2 = (byte) main::j#4 (byte) main::j#3 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#15 (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#38 (byte*) print_char_cursor#19 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#39 (byte*) print_char_cursor#40 (byte*) print_char_cursor#20 Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#41 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#21 +Self Phi Eliminated (byte*) print_char_cursor#22 Self Phi Eliminated (byte*) print_line_cursor#12 Self Phi Eliminated (byte*) print_screen#4 Self Phi Eliminated (byte*) print_line_cursor#18 -Self Phi Eliminated (byte*) print_char_cursor#45 +Self Phi Eliminated (byte*) print_char_cursor#48 Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#19 -Identical Phi Values (byte*) print_char_cursor#40 (byte*) print_char_cursor#17 -Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#40 +Identical Phi Values (byte*) print_char_cursor#42 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#42 Identical Phi Values (signed word) print_sword::w#2 (signed word) print_sword::w#1 -Identical Phi Values (byte*) print_char_cursor#42 (byte*) print_char_cursor#46 -Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#27 -Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#43 (byte*) print_char_cursor#49 +Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#29 Identical Phi Values (word) print_word::w#1 (word) print_word::w#0 -Identical Phi Values (byte*) print_char_cursor#43 (byte*) print_char_cursor#41 -Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#46 (byte*) print_char_cursor#45 +Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#13 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_screen#1 Identical Phi Values (byte*) print_screen#9 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#28 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#55 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#58 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_screen#4 (byte*) print_screen#9 Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#28 -Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_char_cursor#55 +Identical Phi Values (byte*) print_char_cursor#48 (byte*) print_char_cursor#58 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#12 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_line_cursor#12 -Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_line_cursor#12 +Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#26 Identical Phi Values (byte*) print_line_cursor#14 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#14 -Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#19 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [18] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_cls::$1 [78] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) main::$4 [105] if((byte) main::i#1!=rangelast(0,8)) goto main::@1 -Simple Condition (bool~) main::$7 [124] if((byte) main::j#1!=rangelast(0,8)) goto main::@3 +Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [17] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_cls::$1 [82] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) main::$4 [109] if((byte) main::i#1!=rangelast(0,8)) goto main::@1 +Simple Condition (bool~) main::$7 [128] if((byte) main::j#1!=rangelast(0,8)) goto main::@3 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [87] (signed word[]) words#0 ← { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 } +Constant right-side identified [91] (signed word[]) words#0 ← { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' +Constant (const byte) print_char::ch#1 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const signed word[]) words#0 = { -$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000 } Constant (const byte) main::i#0 = 0 @@ -645,10 +668,10 @@ Constant (const byte) main::j#0 = 0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [103] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [105] if(main::i#1!=rangelast(0,8)) goto main::@1 to (number) 9 -Resolved ranged next value [122] main::j#1 ← ++ main::j#2 to ++ -Resolved ranged comparison value [124] if(main::j#1!=rangelast(0,8)) goto main::@3 to (number) 9 +Resolved ranged next value [107] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [109] if(main::i#1!=rangelast(0,8)) goto main::@1 to (number) 9 +Resolved ranged next value [126] main::j#1 ← ++ main::j#2 to ++ +Resolved ranged comparison value [128] if(main::j#1!=rangelast(0,8)) goto main::@3 to (number) 9 Adding number conversion cast (unumber) 9 in if((byte) main::i#1!=(number) 9) goto main::@1 Adding number conversion cast (unumber) 9 in if((byte) main::j#1!=(number) 9) goto main::@3 Successful SSA optimization PassNAddNumberTypeConversions @@ -658,14 +681,15 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 9 Finalized unsigned number type (byte) 9 Successful SSA optimization PassNFinalizeNumberTypeConversions -Constant right-side identified [31] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [32] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Successful SSA optimization Pass2ConstantIdentification -Rewriting multiplication to use shift [44] (byte~) main::$8 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD -Rewriting multiplication to use shift [52] (byte~) sub::$0 ← (byte) sub::idx#3 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift [45] (byte~) main::$8 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift [53] (byte~) sub::$0 ← (byte) sub::idx#3 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte) print_char::ch#0 +Inlining constant with var siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::j#0 @@ -674,6 +698,7 @@ Inlining constant with var siblings (const byte) sub::s#1 Inlining constant with var siblings (const byte) sub::s#2 Inlining constant with var siblings (const byte*) print_line_cursor#0 Constant inlined print_cls::$0 = (byte*) 1024+(word) $3e8 +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_line_cursor#0 = (byte*) 1024 Constant inlined print_char::ch#0 = (byte) '-' Constant inlined main::i#0 = (byte) 0 @@ -687,7 +712,6 @@ Successful SSA optimization Pass2ConstantInlining Eliminating unused constant (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization PassNEliminateUnusedVars Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting main::@11(between main::@7 and main::@1) Added new block during phi lifting main::@12(between main::@10 and main::@3) @@ -702,7 +726,7 @@ Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@8 Adding NOP phi() at start of main::@9 Adding NOP phi() at start of print_ln::@2 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 Adding NOP phi() at start of print_cls @@ -710,11 +734,11 @@ Adding NOP phi() at start of print_cls::@2 CALL GRAPH Calls in [] to main:4 Calls in [main] to sub:11 sub:14 sub:17 print_cls:21 print_sword:26 print_ln:28 -Calls in [print_sword] to print_char:45 print_word:51 -Calls in [print_word] to print_byte:59 print_byte:63 -Calls in [print_byte] to print_char:71 print_char:76 +Calls in [print_sword] to print_char:45 print_word:49 print_char:53 +Calls in [print_word] to print_byte:62 print_byte:65 +Calls in [print_byte] to print_char:73 print_char:78 -Created 14 initial phi equivalence classes +Created 12 initial phi equivalence classes Coalesced [10] sub::idx#4 ← sub::idx#0 Coalesced [13] sub::idx#5 ← sub::idx#1 Coalesced [16] sub::idx#6 ← sub::idx#2 @@ -724,20 +748,17 @@ Coalesced [34] print_line_cursor#31 ← print_line_cursor#1 Coalesced [35] main::i#6 ← main::i#1 Coalesced [36] print_line_cursor#29 ← print_line_cursor#19 Coalesced (already) [42] print_line_cursor#30 ← print_line_cursor#1 -Coalesced [44] print_char_cursor#62 ← print_char_cursor#46 -Coalesced [47] print_sword::w#7 ← print_sword::w#0 -Coalesced [48] print_char_cursor#57 ← print_char_cursor#12 -Coalesced [54] print_sword::w#6 ← print_sword::w#1 -Coalesced [55] print_char_cursor#56 ← print_char_cursor#46 -Coalesced [57] print_byte::b#4 ← print_byte::b#0 -Coalesced [58] print_char_cursor#58 ← print_char_cursor#41 -Coalesced [61] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [62] print_char_cursor#59 ← print_char_cursor#12 -Coalesced [69] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [70] print_char_cursor#60 ← print_char_cursor#44 -Coalesced [74] print_char::ch#5 ← print_char::ch#2 -Coalesced (already) [75] print_char_cursor#61 ← print_char_cursor#12 -Coalesced [90] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [44] print_char_cursor#62 ← print_char_cursor#49 +Coalesced [46] print_sword::w#9 ← print_sword::w#1 +Coalesced (already) [52] print_char_cursor#61 ← print_char_cursor#49 +Coalesced [55] print_sword::w#8 ← print_sword::w#0 +Coalesced [61] print_byte::b#4 ← print_byte::b#0 +Coalesced [64] print_byte::b#5 ← print_byte::b#1 +Coalesced [71] print_char::ch#5 ← print_char::ch#2 +Coalesced [72] print_char_cursor#59 ← print_char_cursor#13 +Coalesced [76] print_char::ch#6 ← print_char::ch#3 +Coalesced (already) [77] print_char_cursor#60 ← print_char_cursor#13 +Coalesced [88] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) @12 Culled Empty Block (label) @19 @@ -746,14 +767,14 @@ Culled Empty Block (label) main::@8 Culled Empty Block (label) main::@11 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@3 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @21 to @1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block main::@5 to main::@4 Renumbering block main::@6 to main::@5 Renumbering block main::@7 to main::@6 @@ -767,7 +788,8 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@7 Adding NOP phi() at start of print_ln -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of print_cls FINAL CONTROL FLOW GRAPH @@ -806,7 +828,7 @@ main::@2: scope:[main] from main::@6 to:main::@3 main::@3: scope:[main] from main::@2 main::@9 [16] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/(byte*) 1024 ) - [16] (byte*) print_char_cursor#46 ← phi( main::@9/(byte*~) print_char_cursor#63 main::@2/(byte*) 1024 ) + [16] (byte*) print_char_cursor#49 ← phi( main::@9/(byte*~) print_char_cursor#63 main::@2/(byte*) 1024 ) [16] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte) 0 ) [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$8) @@ -832,85 +854,87 @@ print_ln: scope:[print_ln] from main::@7 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [27] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 - [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [30] return to:@return print_sword: scope:[print_sword] from main::@3 - [31] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [32] phi() [33] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [35] (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 ) - [35] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [37] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [34] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [36] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [38] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [37] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [40] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [42] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [43] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [44] (byte*) print_char_cursor#44 ← phi( print_word/(byte*) print_char_cursor#41 print_word::@1/(byte*) print_char_cursor#12 ) - [44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [47] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [50] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [51] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - [52] (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#44 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 ) - [52] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 - [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 +print_sword::@1: scope:[print_sword] from print_sword + [38] phi() + [39] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [41] (byte*) print_char_cursor#34 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#49 print_sword::@3/(byte*) print_char_cursor#49 ) + [41] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 + [43] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#34 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [55] return + [44] return + to:@return +print_word: scope:[print_word] from print_sword::@2 + [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [46] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [48] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [49] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [50] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [52] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [53] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [55] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [56] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [57] return to:@return print_cls: scope:[print_cls] from main::@2 - [56] phi() + [58] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [57] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [58] *((byte*) print_cls::sc#2) ← (byte) ' ' - [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [60] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [59] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [60] *((byte*) print_cls::sc#2) ← (byte) ' ' + [61] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [62] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [61] return + [63] return to:@return sub: scope:[sub] from main::@1 main::@4 main::@5 - [62] (byte) sub::s#3 ← phi( main::@1/(byte) $80 main::@4/(byte) $40 main::@5/(byte) $40 ) - [62] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 ) - [63] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 - [64] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 + [64] (byte) sub::s#3 ← phi( main::@1/(byte) $80 main::@4/(byte) $40 main::@5/(byte) $40 ) + [64] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 ) + [65] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 + [66] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 to:sub::@return sub::@return: scope:[sub] from sub - [65] return + [67] return to:@return @@ -932,15 +956,13 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#2 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#1 4.0 (byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 6.0 +(byte) print_char::ch#3 4.0 +(byte) print_char::ch#4 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 5.190476190476189 -(byte*) print_char_cursor#32 5.0 -(byte*) print_char_cursor#41 2.0 -(byte*) print_char_cursor#44 2.0 -(byte*) print_char_cursor#46 3.0 +(byte*) print_char_cursor#13 3.821428571428572 +(byte*) print_char_cursor#34 6.0 +(byte*) print_char_cursor#49 2.5 (byte*~) print_char_cursor#63 22.0 (void()) print_cls() (byte*) print_cls::sc @@ -956,8 +978,8 @@ VARIABLE REGISTER WEIGHTS (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w (signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 4.25 -(signed word) print_sword::w#3 4.0 +(signed word) print_sword::w#1 2.8333333333333335 +(signed word) print_sword::w#4 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 2.0 @@ -976,10 +998,10 @@ Initial phi equivalence classes [ main::i#2 main::i#1 ] [ main::j#2 main::j#1 ] [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] [ print_cls::sc#2 print_cls::sc#1 ] [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] [ sub::s#3 ] @@ -992,10 +1014,10 @@ Complete equivalence classes [ main::i#2 main::i#1 ] [ main::j#2 main::j#1 ] [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] [ print_cls::sc#2 print_cls::sc#1 ] [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] [ sub::s#3 ] @@ -1007,10 +1029,10 @@ Complete equivalence classes Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Allocated zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -Allocated zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -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#3 print_char::ch#1 print_char::ch#2 ] -Allocated zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] +Allocated zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Allocated zp ZP_BYTE:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Allocated zp ZP_WORD:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] +Allocated zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_BYTE:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] Allocated zp ZP_BYTE:15 [ sub::s#3 ] @@ -1029,7 +1051,7 @@ INITIAL ASM .pc = $80d "Program" //SEG2 Global Constants & labels .label print_line_cursor = 4 - .label print_char_cursor = $a + .label print_char_cursor = 9 //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -1067,12 +1089,12 @@ main: { lda i sta sub.idx //SEG17 [7] call sub - //SEG18 [62] phi from main::@1 to sub [phi:main::@1->sub] + //SEG18 [64] phi from main::@1 to sub [phi:main::@1->sub] sub_from_b1: - //SEG19 [62] phi (byte) sub::s#3 = (byte) $80 [phi:main::@1->sub#0] -- vbuz1=vbuc1 + //SEG19 [64] phi (byte) sub::s#3 = (byte) $80 [phi:main::@1->sub#0] -- vbuz1=vbuc1 lda #$80 sta sub.s - //SEG20 [62] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy + //SEG20 [64] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy jsr sub jmp b4 //SEG21 main::@4 @@ -1081,12 +1103,12 @@ main: { lda i sta sub.idx //SEG23 [9] call sub - //SEG24 [62] phi from main::@4 to sub [phi:main::@4->sub] + //SEG24 [64] phi from main::@4 to sub [phi:main::@4->sub] sub_from_b4: - //SEG25 [62] phi (byte) sub::s#3 = (byte) $40 [phi:main::@4->sub#0] -- vbuz1=vbuc1 + //SEG25 [64] phi (byte) sub::s#3 = (byte) $40 [phi:main::@4->sub#0] -- vbuz1=vbuc1 lda #$40 sta sub.s - //SEG26 [62] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy + //SEG26 [64] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy jsr sub jmp b5 //SEG27 main::@5 @@ -1095,12 +1117,12 @@ main: { lda i sta sub.idx //SEG29 [11] call sub - //SEG30 [62] phi from main::@5 to sub [phi:main::@5->sub] + //SEG30 [64] phi from main::@5 to sub [phi:main::@5->sub] sub_from_b5: - //SEG31 [62] phi (byte) sub::s#3 = (byte) $40 [phi:main::@5->sub#0] -- vbuz1=vbuc1 + //SEG31 [64] phi (byte) sub::s#3 = (byte) $40 [phi:main::@5->sub#0] -- vbuz1=vbuc1 lda #$40 sta sub.s - //SEG32 [62] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy + //SEG32 [64] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy jsr sub jmp b6 //SEG33 main::@6 @@ -1117,7 +1139,7 @@ main: { //SEG37 main::@2 b2: //SEG38 [15] call print_cls - //SEG39 [56] phi from main::@2 to print_cls [phi:main::@2->print_cls] + //SEG39 [58] phi from main::@2 to print_cls [phi:main::@2->print_cls] print_cls_from_b2: jsr print_cls //SEG40 [16] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -1127,7 +1149,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG42 [16] phi (byte*) print_char_cursor#46 = (byte*) 1024 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 + //SEG42 [16] phi (byte*) print_char_cursor#49 = (byte*) 1024 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -1183,7 +1205,7 @@ main: { //SEG59 [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] b3_from_b9: //SEG60 [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - //SEG61 [16] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#63 [phi:main::@9->main::@3#1] -- register_copy + //SEG61 [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#63 [phi:main::@9->main::@3#1] -- register_copy //SEG62 [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp b3 } @@ -1205,7 +1227,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1225,26 +1247,58 @@ print_ln: { // print_sword(signed word zeropage(6) w) print_sword: { .label w = 6 - //SEG72 [31] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG72 [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG73 [32] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG74 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG73 [32] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG74 print_sword::@3 + b3: //SEG75 [33] call print_char - //SEG76 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG77 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG78 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG76 [41] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG77 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#49 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG78 [41] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG79 [34] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG80 [34] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG81 print_sword::@2 + b2: + //SEG82 [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG83 [36] call print_word + jsr print_word + jmp breturn + //SEG84 print_sword::@return + breturn: + //SEG85 [37] return + rts + //SEG86 [38] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG87 print_sword::@1 + b1: + //SEG88 [39] call print_char + //SEG89 [41] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG90 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#49 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG91 [41] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG79 print_sword::@3 - b3: - //SEG80 [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG92 print_sword::@4 + b4: + //SEG93 [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -1252,154 +1306,133 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG81 [35] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG82 [35] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG83 [35] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG84 print_sword::@1 - b1: - //SEG85 [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG86 [37] call print_word - jsr print_word + jmp b2_from_b4 +} +//SEG94 print_char +// Print a single char +// print_char(byte zeropage(8) ch) +print_char: { + .label ch = 8 + //SEG95 [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + lda ch + ldy #0 + sta (print_char_cursor),y + //SEG96 [43] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#34 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: jmp breturn - //SEG87 print_sword::@return + //SEG97 print_char::@return breturn: - //SEG88 [38] return + //SEG98 [44] return rts } -//SEG89 print_word +//SEG99 print_word // Print a word as HEX // print_word(word zeropage($11) w) print_word: { .label w = $11 - //SEG90 [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG100 [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG91 [40] call print_byte - //SEG92 [44] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG101 [46] call print_byte + //SEG102 [50] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG93 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy - //SEG94 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG103 [50] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte jmp b1 - //SEG95 print_word::@1 + //SEG104 print_word::@1 b1: - //SEG96 [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG105 [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG97 [42] call print_byte - //SEG98 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG106 [48] call print_byte + //SEG107 [50] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG99 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG100 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG108 [50] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte jmp breturn - //SEG101 print_word::@return + //SEG109 print_word::@return breturn: - //SEG102 [43] return + //SEG110 [49] return rts } -//SEG103 print_byte +//SEG111 print_byte // Print a byte as HEX -// print_byte(byte zeropage(8) b) +// print_byte(byte zeropage($b) b) print_byte: { .label _0 = $13 .label _2 = $14 - .label b = 8 - //SEG104 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + .label b = $b + //SEG112 [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG105 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG113 [52] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG106 [47] call print_char - //SEG107 [52] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG114 [53] call print_char + //SEG115 [41] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG108 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy - //SEG109 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG116 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG117 [41] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG110 print_byte::@1 + //SEG118 print_byte::@1 b1: - //SEG111 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG119 [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG112 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG120 [55] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG113 [50] call print_char - //SEG114 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG121 [56] call print_char + //SEG122 [41] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG115 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG116 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG123 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG124 [41] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG117 print_byte::@return + //SEG125 print_byte::@return breturn: - //SEG118 [51] return + //SEG126 [57] return rts } -//SEG119 print_char -// Print a single char -// print_char(byte zeropage(9) ch) -print_char: { - .label ch = 9 - //SEG120 [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 - lda ch - ldy #0 - sta (print_char_cursor),y - //SEG121 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - jmp breturn - //SEG122 print_char::@return - breturn: - //SEG123 [55] return - rts -} -//SEG124 print_cls +//SEG127 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $c - //SEG125 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG128 [59] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG126 [57] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG129 [59] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG127 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG130 [59] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG128 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG131 [59] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG129 print_cls::@1 + //SEG132 print_cls::@1 b1: - //SEG130 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG133 [60] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG131 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG134 [61] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG132 [60] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG135 [62] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -1407,22 +1440,22 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG133 print_cls::@return + //SEG136 print_cls::@return breturn: - //SEG134 [61] return + //SEG137 [63] return rts } -//SEG135 sub +//SEG138 sub // sub(byte zeropage($e) idx, byte zeropage($f) s) sub: { .label _0 = $15 .label idx = $e .label s = $f - //SEG136 [63] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG139 [65] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda idx asl sta _0 - //SEG137 [64] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuz1=pwsc1_derefidx_vbuz1_minus_vbuz2 + //SEG140 [66] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuz1=pwsc1_derefidx_vbuz1_minus_vbuz2 ldx _0 sec lda words,x @@ -1432,63 +1465,63 @@ sub: { dec words+1,x !: jmp breturn - //SEG138 sub::@return + //SEG141 sub::@return breturn: - //SEG139 [65] return + //SEG142 [67] return rts } -//SEG140 File Data +//SEG143 File Data print_hextab: .text "0123456789abcdef" words: .word -$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a +Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ] -Statement [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$8) [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a +Statement [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$8) [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a Statement [25] (byte*~) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#63 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#63 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [31] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#46 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#46 print_sword::w#1 ] ) always clobbers reg byte a -Statement [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_char_cursor#41 print_word::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#41 print_word::w#0 ] ) always clobbers reg byte a -Statement [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#41 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:19::print_word:37 [ main::j#2 print_line_cursor#19 print_char_cursor#41 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:19::print_word:37 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ( main:2::print_sword:19::print_word:37::print_byte:40 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] main:2::print_sword:19::print_word:37::print_byte:42 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:19::print_word:37::print_byte:40 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:19::print_word:37::print_byte:42 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 [ print_char_cursor#32 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#32 ] main:2::print_sword:19::print_word:37::print_byte:40::print_char:47 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:19::print_word:37::print_byte:42::print_char:47 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:19::print_word:37::print_byte:40::print_char:50 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#32 ] main:2::print_sword:19::print_word:37::print_byte:42::print_char:50 [ main::j#2 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte y +Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#49 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#49 print_sword::w#1 ] ) always clobbers reg byte a +Statement [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 [ print_char_cursor#34 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] main:2::print_sword:19::print_char:39 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:46::print_char:53 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:48::print_char:53 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:46::print_char:56 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:48::print_char:56 [ main::j#2 print_line_cursor#19 print_char_cursor#34 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ] -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 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:15 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [60] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:15 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [63] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [60] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:15 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [62] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:15 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [65] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ sub::s#3 ] -Statement [64] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a -Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a -Statement [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$8) [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#46 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a +Statement [66] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a +Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a +Statement [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$8) [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a Statement [25] (byte*~) print_char_cursor#63 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#63 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#63 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [31] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#46 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#46 print_sword::w#1 ] ) always clobbers reg byte a -Statement [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_char_cursor#41 print_word::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#41 print_word::w#0 ] ) always clobbers reg byte a -Statement [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#41 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:19::print_word:37 [ main::j#2 print_line_cursor#19 print_char_cursor#41 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:19::print_word:37 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ( main:2::print_sword:19::print_word:37::print_byte:40 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] main:2::print_sword:19::print_word:37::print_byte:42 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#44 print_byte::$0 ] ) always clobbers reg byte a -Statement [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:19::print_word:37::print_byte:40 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:19::print_word:37::print_byte:42 [ main::j#2 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 [ print_char_cursor#32 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#32 ] main:2::print_sword:19::print_word:37::print_byte:40::print_char:47 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:19::print_word:37::print_byte:42::print_char:47 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#32 ] main:2::print_sword:19::print_word:37::print_byte:40::print_char:50 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#32 ] main:2::print_sword:19::print_word:37::print_byte:42::print_char:50 [ main::j#2 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte y -Statement [58] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:15 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [60] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:15 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [63] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] ) always clobbers reg byte a -Statement [64] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a +Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#49 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#49 print_sword::w#1 ] ) always clobbers reg byte a +Statement [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 [ print_char_cursor#34 ] ( main:2::print_sword:19::print_char:33 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] main:2::print_sword:19::print_char:39 [ main::j#2 print_line_cursor#19 print_sword::w#1 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:46::print_char:53 [ main::j#2 print_line_cursor#19 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:48::print_char:53 [ main::j#2 print_line_cursor#19 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:46::print_char:56 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#34 ] main:2::print_sword:19::print_word:36::print_byte:48::print_char:56 [ main::j#2 print_line_cursor#19 print_char_cursor#34 ] ) always clobbers reg byte y +Statement [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:19::print_word:36 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:19::print_word:36::print_byte:46 [ main::j#2 print_line_cursor#19 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:19::print_word:36::print_byte:48 [ main::j#2 print_line_cursor#19 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [60] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:15 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [62] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:15 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [65] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 [ sub::s#3 sub::$0 ] ( main:2::sub:7 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:9 [ main::i#2 sub::s#3 sub::$0 ] main:2::sub:11 [ main::i#2 sub::s#3 sub::$0 ] ) always clobbers reg byte a +Statement [66] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp ZP_WORD:4 , -Potential registers zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] : 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 x , -Potential registers zp ZP_BYTE:9 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] : zp ZP_WORD:10 , +Potential registers zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] : zp ZP_WORD:6 , +Potential registers zp ZP_BYTE:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] : zp ZP_WORD:9 , +Potential registers zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:11 , reg byte x , Potential registers zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:12 , Potential registers zp ZP_BYTE:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:15 [ sub::s#3 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , @@ -1499,32 +1532,32 @@ Potential registers zp ZP_BYTE:20 [ print_byte::$2 ] : zp ZP_BYTE:20 , reg byte Potential registers zp ZP_BYTE:21 [ sub::$0 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 252.6: zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 39.19: zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] +Uplift Scope [] 252.6: zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 34.32: zp ZP_WORD:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] Uplift Scope [sub] 101: zp ZP_BYTE:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] 6: zp ZP_BYTE:21 [ sub::$0 ] 1: zp ZP_BYTE:15 [ sub::s#3 ] Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:16 [ main::$8 ] 16.5: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#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:19 [ print_byte::$0 ] 4: zp ZP_BYTE:20 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:9 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplift Scope [print_sword] 12.25: zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:19 [ print_byte::$0 ] 4: zp ZP_BYTE:20 [ print_byte::$2 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_sword] 10.83: zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Uplift Scope [print_word] 2: zp ZP_WORD:17 [ print_word::w#0 ] Uplift Scope [print_ln] -Uplifting [] best 6553 combination zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:10 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] -Uplifting [sub] best 6450 combination reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte a [ sub::$0 ] reg byte x [ sub::s#3 ] -Uplifting [main] best 6190 combination reg byte y [ main::i#2 main::i#1 ] reg byte a [ main::$8 ] reg byte x [ main::j#2 main::j#1 ] -Uplifting [print_cls] best 6190 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 6182 combination zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 6170 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplifting [print_sword] best 6170 combination zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_word] best 6170 combination zp ZP_WORD:17 [ print_word::w#0 ] -Uplifting [print_ln] best 6170 combination -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 6170 combination zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] ] with [ zp ZP_WORD:17 [ print_word::w#0 ] ] - score: 1 +Uplifting [] best 6570 combination zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] +Uplifting [sub] best 6467 combination reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte a [ sub::$0 ] reg byte x [ sub::s#3 ] +Uplifting [main] best 6207 combination reg byte y [ main::i#2 main::i#1 ] reg byte a [ main::$8 ] reg byte x [ main::j#2 main::j#1 ] +Uplifting [print_cls] best 6207 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 6199 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_char] best 6184 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_sword] best 6184 combination zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [print_word] best 6184 combination zp ZP_WORD:17 [ print_word::w#0 ] +Uplifting [print_ln] best 6184 combination +Attempting to uplift remaining variables inzp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_byte] best 6184 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] with [ zp ZP_WORD:17 [ print_word::w#0 ] ] - score: 1 Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#0 ] -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] +Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:6 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] +Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated (was zp ZP_WORD:12) zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] ASSEMBLER BEFORE OPTIMIZATION @@ -1536,7 +1569,7 @@ ASSEMBLER BEFORE OPTIMIZATION .pc = $80d "Program" //SEG2 Global Constants & labels .label print_line_cursor = 2 - .label print_char_cursor = 7 + .label print_char_cursor = 6 //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -1569,11 +1602,11 @@ main: { //SEG16 [6] (byte) sub::idx#0 ← (byte) main::i#2 -- vbuaa=vbuyy tya //SEG17 [7] call sub - //SEG18 [62] phi from main::@1 to sub [phi:main::@1->sub] + //SEG18 [64] phi from main::@1 to sub [phi:main::@1->sub] sub_from_b1: - //SEG19 [62] phi (byte) sub::s#3 = (byte) $80 [phi:main::@1->sub#0] -- vbuxx=vbuc1 + //SEG19 [64] phi (byte) sub::s#3 = (byte) $80 [phi:main::@1->sub#0] -- vbuxx=vbuc1 ldx #$80 - //SEG20 [62] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy + //SEG20 [64] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy jsr sub jmp b4 //SEG21 main::@4 @@ -1581,11 +1614,11 @@ main: { //SEG22 [8] (byte) sub::idx#1 ← (byte) main::i#2 -- vbuaa=vbuyy tya //SEG23 [9] call sub - //SEG24 [62] phi from main::@4 to sub [phi:main::@4->sub] + //SEG24 [64] phi from main::@4 to sub [phi:main::@4->sub] sub_from_b4: - //SEG25 [62] phi (byte) sub::s#3 = (byte) $40 [phi:main::@4->sub#0] -- vbuxx=vbuc1 + //SEG25 [64] phi (byte) sub::s#3 = (byte) $40 [phi:main::@4->sub#0] -- vbuxx=vbuc1 ldx #$40 - //SEG26 [62] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy + //SEG26 [64] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy jsr sub jmp b5 //SEG27 main::@5 @@ -1593,11 +1626,11 @@ main: { //SEG28 [10] (byte) sub::idx#2 ← (byte) main::i#2 -- vbuaa=vbuyy tya //SEG29 [11] call sub - //SEG30 [62] phi from main::@5 to sub [phi:main::@5->sub] + //SEG30 [64] phi from main::@5 to sub [phi:main::@5->sub] sub_from_b5: - //SEG31 [62] phi (byte) sub::s#3 = (byte) $40 [phi:main::@5->sub#0] -- vbuxx=vbuc1 + //SEG31 [64] phi (byte) sub::s#3 = (byte) $40 [phi:main::@5->sub#0] -- vbuxx=vbuc1 ldx #$40 - //SEG32 [62] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy + //SEG32 [64] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy jsr sub jmp b6 //SEG33 main::@6 @@ -1613,7 +1646,7 @@ main: { //SEG37 main::@2 b2: //SEG38 [15] call print_cls - //SEG39 [56] phi from main::@2 to print_cls [phi:main::@2->print_cls] + //SEG39 [58] phi from main::@2 to print_cls [phi:main::@2->print_cls] print_cls_from_b2: jsr print_cls //SEG40 [16] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -1623,7 +1656,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG42 [16] phi (byte*) print_char_cursor#46 = (byte*) 1024 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 + //SEG42 [16] phi (byte*) print_char_cursor#49 = (byte*) 1024 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -1676,7 +1709,7 @@ main: { //SEG59 [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] b3_from_b9: //SEG60 [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - //SEG61 [16] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#63 [phi:main::@9->main::@3#1] -- register_copy + //SEG61 [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#63 [phi:main::@9->main::@3#1] -- register_copy //SEG62 [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp b3 } @@ -1698,7 +1731,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1718,25 +1751,52 @@ print_ln: { // print_sword(signed word zeropage(4) w) print_sword: { .label w = 4 - //SEG72 [31] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG72 [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG73 [32] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG74 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG73 [32] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG74 print_sword::@3 + b3: //SEG75 [33] call print_char - //SEG76 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG77 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG78 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG76 [41] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG77 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#49 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG78 [41] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG79 [34] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG80 [34] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG81 print_sword::@2 + b2: + //SEG82 [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG83 [36] call print_word + jsr print_word + jmp breturn + //SEG84 print_sword::@return + breturn: + //SEG85 [37] return + rts + //SEG86 [38] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG87 print_sword::@1 + b1: + //SEG88 [39] call print_char + //SEG89 [41] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG90 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#49 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG91 [41] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG79 print_sword::@3 - b3: - //SEG80 [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG92 print_sword::@4 + b4: + //SEG93 [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -1744,142 +1804,125 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG81 [35] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG82 [35] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG83 [35] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG84 print_sword::@1 - b1: - //SEG85 [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG86 [37] call print_word - jsr print_word - jmp breturn - //SEG87 print_sword::@return - breturn: - //SEG88 [38] return - rts + jmp b2_from_b4 } -//SEG89 print_word -// Print a word as HEX -// print_word(word zeropage(4) w) -print_word: { - .label w = 4 - //SEG90 [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda w+1 - sta print_byte.b - //SEG91 [40] call print_byte - //SEG92 [44] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG93 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy - //SEG94 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - //SEG95 print_word::@1 - b1: - //SEG96 [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 - lda w - sta print_byte.b - //SEG97 [42] call print_byte - //SEG98 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG99 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG100 [44] 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 - //SEG101 print_word::@return - breturn: - //SEG102 [43] return - rts -} -//SEG103 print_byte -// Print a byte as HEX -// print_byte(byte zeropage(6) b) -print_byte: { - .label b = 6 - //SEG104 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda b - lsr - lsr - lsr - lsr - //SEG105 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - //SEG106 [47] call print_char - //SEG107 [52] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - //SEG108 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy - //SEG109 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - //SEG110 print_byte::@1 - b1: - //SEG111 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 - lda #$f - and b - //SEG112 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - //SEG113 [50] call print_char - //SEG114 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - //SEG115 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG116 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - //SEG117 print_byte::@return - breturn: - //SEG118 [51] return - rts -} -//SEG119 print_char +//SEG94 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG120 [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG95 [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG121 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 + //SEG96 [43] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#34 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG122 print_char::@return + //SEG97 print_char::@return breturn: - //SEG123 [55] return + //SEG98 [44] return rts } -//SEG124 print_cls +//SEG99 print_word +// Print a word as HEX +// print_word(word zeropage(4) w) +print_word: { + .label w = 4 + //SEG100 [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte.b + //SEG101 [46] call print_byte + //SEG102 [50] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG103 [50] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy + jsr print_byte + jmp b1 + //SEG104 print_word::@1 + b1: + //SEG105 [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + lda w + sta print_byte.b + //SEG106 [48] call print_byte + //SEG107 [50] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG108 [50] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy + jsr print_byte + jmp breturn + //SEG109 print_word::@return + breturn: + //SEG110 [49] return + rts +} +//SEG111 print_byte +// Print a byte as HEX +// print_byte(byte zeropage(8) b) +print_byte: { + .label b = 8 + //SEG112 [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + lda b + lsr + lsr + lsr + lsr + //SEG113 [52] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + //SEG114 [53] call print_char + //SEG115 [41] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG116 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG117 [41] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG118 print_byte::@1 + b1: + //SEG119 [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and b + //SEG120 [55] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + //SEG121 [56] call print_char + //SEG122 [41] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG123 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG124 [41] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG125 print_byte::@return + breturn: + //SEG126 [57] return + rts +} +//SEG127 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 9 - //SEG125 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG128 [59] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG126 [57] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG129 [59] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG127 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG130 [59] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG128 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG131 [59] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG129 print_cls::@1 + //SEG132 print_cls::@1 b1: - //SEG130 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG133 [60] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG131 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG134 [61] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG132 [60] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG135 [62] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -1887,17 +1930,17 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG133 print_cls::@return + //SEG136 print_cls::@return breturn: - //SEG134 [61] return + //SEG137 [63] return rts } -//SEG135 sub +//SEG138 sub // sub(byte register(A) idx, byte register(X) s) sub: { - //SEG136 [63] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG139 [65] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG137 [64] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuaa=pwsc1_derefidx_vbuaa_minus_vbuxx + //SEG140 [66] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuaa=pwsc1_derefidx_vbuaa_minus_vbuxx sec stx $ff tax @@ -1908,12 +1951,12 @@ sub: { dec words+1,x !: jmp breturn - //SEG138 sub::@return + //SEG141 sub::@return breturn: - //SEG139 [65] return + //SEG142 [67] return rts } -//SEG140 File Data +//SEG143 File Data print_hextab: .text "0123456789abcdef" words: .word -$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000 @@ -1931,15 +1974,16 @@ Removing instruction jmp b8 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 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 breturn @@ -1948,6 +1992,7 @@ Replacing label b1_from_b6 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction b1_from_bbegin: @@ -1961,10 +2006,12 @@ Removing instruction b7_from_b3: Removing instruction print_ln_from_b7: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: +Removing instruction print_char_from_b1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bend: @@ -1982,9 +2029,10 @@ Removing instruction b8: Removing instruction breturn: Removing instruction b3_from_b9: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: +Removing instruction breturn: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -1993,7 +2041,6 @@ Removing instruction print_char_from_print_byte: Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: -Removing instruction breturn: Removing instruction b1_from_print_cls: Removing instruction breturn: Removing instruction breturn: @@ -2035,22 +2082,20 @@ FINAL SYMBOL TABLE (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp ZP_BYTE:6 4.0 -(byte) print_byte::b#1 b zp ZP_BYTE:6 4.0 -(byte) print_byte::b#2 b zp ZP_BYTE:6 2.0 +(byte) print_byte::b#0 b zp ZP_BYTE:8 4.0 +(byte) print_byte::b#1 b zp ZP_BYTE:8 4.0 +(byte) print_byte::b#2 b zp ZP_BYTE:8 2.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#4 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:7 5.190476190476189 -(byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:7 5.0 -(byte*) print_char_cursor#41 print_char_cursor zp ZP_WORD:7 2.0 -(byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:7 2.0 -(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:7 3.0 -(byte*~) print_char_cursor#63 print_char_cursor zp ZP_WORD:7 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:6 3.821428571428572 +(byte*) print_char_cursor#34 print_char_cursor zp ZP_WORD:6 6.0 +(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:6 2.5 +(byte*~) print_char_cursor#63 print_char_cursor zp ZP_WORD:6 22.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -2071,11 +2116,12 @@ FINAL SYMBOL TABLE (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:4 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:4 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:4 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:4 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:4 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -2097,10 +2143,10 @@ FINAL SYMBOL TABLE reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -zp ZP_WORD:4 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#0 ] -zp ZP_BYTE:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:7 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] +zp ZP_WORD:4 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] +reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:6 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] +zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte x [ sub::s#3 ] @@ -2111,7 +2157,7 @@ reg byte a [ sub::$0 ] FINAL ASSEMBLER -Score: 5261 +Score: 5272 //SEG0 File Comments // Tests that signed indexed subtract works as intended @@ -2121,7 +2167,7 @@ Score: 5261 .pc = $80d "Program" //SEG2 Global Constants & labels .label print_line_cursor = 2 - .label print_char_cursor = 7 + .label print_char_cursor = 6 //SEG3 @begin //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] //SEG5 @1 @@ -2141,28 +2187,28 @@ main: { //SEG16 [6] (byte) sub::idx#0 ← (byte) main::i#2 -- vbuaa=vbuyy tya //SEG17 [7] call sub - //SEG18 [62] phi from main::@1 to sub [phi:main::@1->sub] - //SEG19 [62] phi (byte) sub::s#3 = (byte) $80 [phi:main::@1->sub#0] -- vbuxx=vbuc1 + //SEG18 [64] phi from main::@1 to sub [phi:main::@1->sub] + //SEG19 [64] phi (byte) sub::s#3 = (byte) $80 [phi:main::@1->sub#0] -- vbuxx=vbuc1 ldx #$80 - //SEG20 [62] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy + //SEG20 [64] phi (byte) sub::idx#3 = (byte) sub::idx#0 [phi:main::@1->sub#1] -- register_copy jsr sub //SEG21 main::@4 //SEG22 [8] (byte) sub::idx#1 ← (byte) main::i#2 -- vbuaa=vbuyy tya //SEG23 [9] call sub - //SEG24 [62] phi from main::@4 to sub [phi:main::@4->sub] - //SEG25 [62] phi (byte) sub::s#3 = (byte) $40 [phi:main::@4->sub#0] -- vbuxx=vbuc1 + //SEG24 [64] phi from main::@4 to sub [phi:main::@4->sub] + //SEG25 [64] phi (byte) sub::s#3 = (byte) $40 [phi:main::@4->sub#0] -- vbuxx=vbuc1 ldx #$40 - //SEG26 [62] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy + //SEG26 [64] phi (byte) sub::idx#3 = (byte) sub::idx#1 [phi:main::@4->sub#1] -- register_copy jsr sub //SEG27 main::@5 //SEG28 [10] (byte) sub::idx#2 ← (byte) main::i#2 -- vbuaa=vbuyy tya //SEG29 [11] call sub - //SEG30 [62] phi from main::@5 to sub [phi:main::@5->sub] - //SEG31 [62] phi (byte) sub::s#3 = (byte) $40 [phi:main::@5->sub#0] -- vbuxx=vbuc1 + //SEG30 [64] phi from main::@5 to sub [phi:main::@5->sub] + //SEG31 [64] phi (byte) sub::s#3 = (byte) $40 [phi:main::@5->sub#0] -- vbuxx=vbuc1 ldx #$40 - //SEG32 [62] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy + //SEG32 [64] phi (byte) sub::idx#3 = (byte) sub::idx#2 [phi:main::@5->sub#1] -- register_copy jsr sub //SEG33 main::@6 //SEG34 [12] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy @@ -2173,7 +2219,7 @@ main: { //SEG36 [14] phi from main::@6 to main::@2 [phi:main::@6->main::@2] //SEG37 main::@2 //SEG38 [15] call print_cls - //SEG39 [56] phi from main::@2 to print_cls [phi:main::@2->print_cls] + //SEG39 [58] phi from main::@2 to print_cls [phi:main::@2->print_cls] jsr print_cls //SEG40 [16] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG41 [16] phi (byte*) print_line_cursor#19 = (byte*) 1024 [phi:main::@2->main::@3#0] -- pbuz1=pbuc1 @@ -2181,7 +2227,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG42 [16] phi (byte*) print_char_cursor#46 = (byte*) 1024 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 + //SEG42 [16] phi (byte*) print_char_cursor#49 = (byte*) 1024 [phi:main::@2->main::@3#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -2224,7 +2270,7 @@ main: { sta print_char_cursor+1 //SEG59 [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] //SEG60 [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - //SEG61 [16] phi (byte*) print_char_cursor#46 = (byte*~) print_char_cursor#63 [phi:main::@9->main::@3#1] -- register_copy + //SEG61 [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#63 [phi:main::@9->main::@3#1] -- register_copy //SEG62 [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp b3 } @@ -2243,7 +2289,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG68 [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -2261,19 +2307,38 @@ print_ln: { // print_sword(signed word zeropage(4) w) print_sword: { .label w = 4 - //SEG72 [31] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG72 [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG73 [32] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG74 print_sword::@2 + bmi b1 + //SEG73 [32] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG74 print_sword::@3 //SEG75 [33] call print_char - //SEG76 [52] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG77 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG78 [52] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG76 [41] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG77 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#49 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG78 [41] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG79 [34] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG80 [34] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG81 print_sword::@2 + b2: + //SEG82 [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG83 [36] call print_word + jsr print_word + //SEG84 print_sword::@return + //SEG85 [37] return + rts + //SEG86 [38] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG87 print_sword::@1 + b1: + //SEG88 [39] call print_char + //SEG89 [41] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG90 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#49 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG91 [41] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG79 print_sword::@3 - //SEG80 [34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG92 print_sword::@4 + //SEG93 [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -2281,135 +2346,123 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG81 [35] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG82 [35] phi (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG83 [35] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG84 print_sword::@1 - b1: - //SEG85 [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG86 [37] call print_word - jsr print_word - //SEG87 print_sword::@return - //SEG88 [38] return + jmp b2 +} +//SEG94 print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + //SEG95 [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + //SEG96 [43] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#34 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: + //SEG97 print_char::@return + //SEG98 [44] return rts } -//SEG89 print_word +//SEG99 print_word // Print a word as HEX // print_word(word zeropage(4) w) print_word: { .label w = 4 - //SEG90 [39] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG100 [45] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG91 [40] call print_byte - //SEG92 [44] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG93 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#41 [phi:print_word->print_byte#0] -- register_copy - //SEG94 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG101 [46] call print_byte + //SEG102 [50] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG103 [50] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte - //SEG95 print_word::@1 - //SEG96 [41] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG104 print_word::@1 + //SEG105 [47] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG97 [42] call print_byte - //SEG98 [44] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG99 [44] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG100 [44] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG106 [48] call print_byte + //SEG107 [50] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG108 [50] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte - //SEG101 print_word::@return - //SEG102 [43] return + //SEG109 print_word::@return + //SEG110 [49] return rts } -//SEG103 print_byte +//SEG111 print_byte // Print a byte as HEX -// print_byte(byte zeropage(6) b) +// print_byte(byte zeropage(8) b) print_byte: { - .label b = 6 - //SEG104 [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + .label b = 8 + //SEG112 [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG105 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG113 [52] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG106 [47] call print_char - //SEG107 [52] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG108 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#44 [phi:print_byte->print_char#0] -- register_copy - //SEG109 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG114 [53] call print_char + //SEG115 [41] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG116 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG117 [41] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG110 print_byte::@1 - //SEG111 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG118 print_byte::@1 + //SEG119 [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG112 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG120 [55] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG113 [50] call print_char - //SEG114 [52] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG115 [52] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG116 [52] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG121 [56] call print_char + //SEG122 [41] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG123 [41] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG124 [41] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG117 print_byte::@return - //SEG118 [51] return + //SEG125 print_byte::@return + //SEG126 [57] return rts } -//SEG119 print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - //SEG120 [53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - //SEG121 [54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - //SEG122 print_char::@return - //SEG123 [55] return - rts -} -//SEG124 print_cls +//SEG127 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 9 - //SEG125 [57] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG126 [57] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG128 [59] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG129 [59] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG127 [57] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG128 [57] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG129 print_cls::@1 + //SEG130 [59] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG131 [59] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG132 print_cls::@1 b1: - //SEG130 [58] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG133 [60] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG131 [59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG134 [61] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG132 [60] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG135 [62] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG133 print_cls::@return - //SEG134 [61] return + //SEG136 print_cls::@return + //SEG137 [63] return rts } -//SEG135 sub +//SEG138 sub // sub(byte register(A) idx, byte register(X) s) sub: { - //SEG136 [63] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 -- vbuaa=vbuaa_rol_1 + //SEG139 [65] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG137 [64] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuaa=pwsc1_derefidx_vbuaa_minus_vbuxx + //SEG140 [66] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3 -- pwsc1_derefidx_vbuaa=pwsc1_derefidx_vbuaa_minus_vbuxx sec stx $ff tax @@ -2419,11 +2472,11 @@ sub: { bcs !+ dec words+1,x !: - //SEG138 sub::@return - //SEG139 [65] return + //SEG141 sub::@return + //SEG142 [67] return rts } -//SEG140 File Data +//SEG143 File Data print_hextab: .text "0123456789abcdef" words: .word -$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000 diff --git a/src/test/ref/signed-indexed-subtract.sym b/src/test/ref/signed-indexed-subtract.sym index 08152a5e6..cbdab3f2a 100644 --- a/src/test/ref/signed-indexed-subtract.sym +++ b/src/test/ref/signed-indexed-subtract.sym @@ -25,22 +25,20 @@ (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp ZP_BYTE:6 4.0 -(byte) print_byte::b#1 b zp ZP_BYTE:6 4.0 -(byte) print_byte::b#2 b zp ZP_BYTE:6 2.0 +(byte) print_byte::b#0 b zp ZP_BYTE:8 4.0 +(byte) print_byte::b#1 b zp ZP_BYTE:8 4.0 +(byte) print_byte::b#2 b zp ZP_BYTE:8 2.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#4 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:7 5.190476190476189 -(byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:7 5.0 -(byte*) print_char_cursor#41 print_char_cursor zp ZP_WORD:7 2.0 -(byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:7 2.0 -(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:7 3.0 -(byte*~) print_char_cursor#63 print_char_cursor zp ZP_WORD:7 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:6 3.821428571428572 +(byte*) print_char_cursor#34 print_char_cursor zp ZP_WORD:6 6.0 +(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:6 2.5 +(byte*~) print_char_cursor#63 print_char_cursor zp ZP_WORD:6 22.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -61,11 +59,12 @@ (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:4 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:4 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:4 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:4 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:4 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -87,10 +86,10 @@ reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -zp ZP_WORD:4 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#0 ] -zp ZP_BYTE:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:7 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ] +zp ZP_WORD:4 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] +reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:6 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ] +zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte x [ sub::s#3 ] diff --git a/src/test/ref/sinusgen16.asm b/src/test/ref/sinusgen16.asm index 34e784ec1..cfd44d14f 100644 --- a/src/test/ref/sinusgen16.asm +++ b/src/test/ref/sinusgen16.asm @@ -95,7 +95,13 @@ print_str: { print_sword: { .label w = 6 lda w+1 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_word + rts + b1: lda #'-' jsr print_char sec @@ -105,8 +111,17 @@ print_sword: { lda #0 sbc w+1 sta w+1 - b1: - jsr print_word + jmp b2 +} +// Print a single char +// print_char(byte register(A) ch) +print_char: { + ldy #0 + sta (print_char_cursor),y + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: rts } // Print a word as HEX @@ -138,17 +153,6 @@ print_byte: { jsr print_char rts } -// Print a single char -// print_char(byte register(A) ch) -print_char: { - ldy #0 - sta (print_char_cursor),y - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - rts -} // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $a diff --git a/src/test/ref/sinusgen16.cfg b/src/test/ref/sinusgen16.cfg index fd1605640..474fdd861 100644 --- a/src/test/ref/sinusgen16.cfg +++ b/src/test/ref/sinusgen16.cfg @@ -16,7 +16,7 @@ main::@4: scope:[main] from main [7] call print_cls to:main::@1 main::@1: scope:[main] from main::@4 main::@6 - [8] (byte*) print_char_cursor#49 ← phi( main::@4/(const byte*) print_line_cursor#0 main::@6/(byte*) print_char_cursor#2 ) + [8] (byte*) print_char_cursor#52 ← phi( main::@4/(const byte*) print_line_cursor#0 main::@6/(byte*) print_char_cursor#2 ) [8] (signed word*) main::st1#2 ← phi( main::@4/(const signed word[$78]) main::sintab1#0 main::@6/(signed word*) main::st1#1 ) [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [10] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 @@ -26,7 +26,7 @@ main::@3: scope:[main] from main::@1 [12] call print_str to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [13] (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#49 main::@3/(byte*) print_char_cursor#2 ) + [13] (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#52 main::@3/(byte*) print_char_cursor#2 ) [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [15] call print_sword to:main::@5 @@ -42,11 +42,11 @@ main::@return: scope:[main] from main::@6 [20] return to:@return print_str: scope:[print_str] from main::@3 main::@5 - [21] (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@5/(byte*) print_char_cursor#12 ) + [21] (byte*) print_char_cursor#54 ← phi( main::@3/(byte*) print_char_cursor#52 main::@5/(byte*) print_char_cursor#13 ) [21] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@5/(const string) main::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [22] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 ) + [22] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#54 print_str::@2/(byte*) print_char_cursor#1 ) [22] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -59,262 +59,264 @@ print_str::@2: scope:[print_str] from print_str::@1 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 to:print_str::@1 print_sword: scope:[print_sword] from main::@2 - [28] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [29] phi() [30] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [32] (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#48 print_sword::@3/(byte*) print_char_cursor#12 ) - [32] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [33] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [34] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [31] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [33] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [35] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [34] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [37] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [39] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [40] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [41] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 ) - [41] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [43] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [44] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [46] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [47] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [48] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - [49] (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#48 ) - [49] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [50] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 - [51] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 +print_sword::@1: scope:[print_sword] from print_sword + [35] phi() + [36] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [38] (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#51 print_sword::@3/(byte*) print_char_cursor#51 ) + [38] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 + [40] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [52] return + [41] return + to:@return +print_word: scope:[print_word] from print_sword::@2 + [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [43] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [45] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [46] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [47] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [50] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [52] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [53] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [54] return to:@return print_cls: scope:[print_cls] from main::@4 - [53] phi() + [55] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [54] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [55] *((byte*) print_cls::sc#2) ← (byte) ' ' - [56] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [57] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 + [56] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [57] *((byte*) print_cls::sc#2) ← (byte) ' ' + [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [59] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [58] return + [60] return to:@return sin16s_gen: scope:[sin16s_gen] from main - [59] phi() - [60] call div32u16u - [61] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + [61] phi() + [62] call div32u16u + [63] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 to:sin16s_gen::@2 sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen - [62] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + [64] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 to:sin16s_gen::@1 sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3 - [63] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 ) - [63] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 ) - [63] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 ) - [64] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 - [65] call sin16s - [66] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + [65] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 ) + [65] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 ) + [65] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 ) + [66] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 + [67] call sin16s + [68] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 to:sin16s_gen::@3 sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1 - [67] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - [68] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 - [69] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD - [70] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 - [71] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 - [72] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 + [69] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + [70] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 + [71] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [72] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 + [73] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 + [74] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 to:sin16s_gen::@return sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@3 - [73] return + [75] return to:@return sin16s: scope:[sin16s] from sin16s_gen::@1 - [74] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [76] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [75] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [77] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [76] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) - [76] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [77] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [78] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) + [78] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [79] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [78] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [80] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [79] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [80] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 - [81] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [82] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [83] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [84] call mulu16_sel - [85] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [81] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [82] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 + [83] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [84] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [85] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [86] call mulu16_sel + [87] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [86] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [87] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [88] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [89] call mulu16_sel - [90] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [88] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [89] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [90] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [91] call mulu16_sel + [92] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [91] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [92] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [93] call mulu16_sel - [94] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [93] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [94] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [95] call mulu16_sel + [96] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [95] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [96] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [97] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [98] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [99] call mulu16_sel - [100] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [97] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [98] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [99] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [100] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [101] call mulu16_sel + [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [101] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [102] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [103] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [104] call mulu16_sel - [105] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [103] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [104] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [105] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [106] call mulu16_sel + [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [106] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [107] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 - [108] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [109] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 + [108] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [109] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 + [110] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [111] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [110] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [112] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [111] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [113] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [112] return + [114] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [113] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [115] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 - [114] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 ) - [114] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 ) - [114] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) - [115] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 - [116] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 - [117] call mul16u - [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [116] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 ) + [116] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 ) + [116] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) + [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 + [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + [119] call mul16u + [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [119] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - [120] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [121] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [123] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [122] return + [124] return to:@return mul16u: scope:[mul16u] from mulu16_sel - [123] phi() + [125] phi() to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [124] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 ) - [124] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [124] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 ) - [125] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 + [126] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 ) + [126] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [126] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 ) + [127] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [126] return + [128] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [127] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 - [128] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 + [130] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [129] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [130] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [131] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 - [132] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [132] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 + [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 div32u16u: scope:[div32u16u] from sin16s_gen - [133] phi() - [134] call divr16u - [135] (word) divr16u::return#2 ← (word) divr16u::return#0 + [135] phi() + [136] call divr16u + [137] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [136] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [137] (word) divr16u::rem#4 ← (word) rem16u#1 - [138] call divr16u - [139] (word) divr16u::return#3 ← (word) divr16u::return#0 + [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [139] (word) divr16u::rem#4 ← (word) rem16u#1 + [140] call divr16u + [141] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [140] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [141] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [142] return + [144] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [143] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) - [143] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [145] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) + [145] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [144] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [144] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [144] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [144] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [145] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [146] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [147] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [148] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [146] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [146] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [146] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [146] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [150] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [149] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [150] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [151] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [152] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [153] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 + [152] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [154] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [155] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 + [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [156] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [156] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [157] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [158] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [158] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [158] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [160] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [159] (word) rem16u#1 ← (word) divr16u::rem#11 + [161] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [160] return + [162] return to:@return diff --git a/src/test/ref/sinusgen16.log b/src/test/ref/sinusgen16.log index 8bd61dd1b..fdf46b358 100644 --- a/src/test/ref/sinusgen16.log +++ b/src/test/ref/sinusgen16.log @@ -40,6 +40,7 @@ Culled Empty Block (label) print_str::@6 Culled Empty Block (label) @23 Culled Empty Block (label) @24 Culled Empty Block (label) @25 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @26 Culled Empty Block (label) @27 Culled Empty Block (label) @28 @@ -437,127 +438,137 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@32 print_str: scope:[print_str] from main::@3 main::@7 - (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@7/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#54 ← phi( main::@3/(byte*) print_char_cursor#52 main::@7/(byte*) print_char_cursor#18 ) (byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@7/(byte*) print_str::str#1 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#42 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#44 ← phi( print_str/(byte*) print_char_cursor#54 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#3) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#22 ← phi( print_str::@1/(byte*) print_char_cursor#42 ) + (byte*) print_char_cursor#23 ← phi( print_str::@1/(byte*) print_char_cursor#44 ) (byte*) print_str::str#4 ← phi( print_str::@1/(byte*) print_str::str#3 ) - *((byte*) print_char_cursor#22) ← *((byte*) print_str::str#4) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#22 + *((byte*) print_char_cursor#23) ← *((byte*) print_str::str#4) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#23 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#23 ← phi( print_str::@1/(byte*) print_char_cursor#42 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#23 + (byte*) print_char_cursor#24 ← phi( print_str::@1/(byte*) print_char_cursor#44 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#24 return to:@return print_sword: scope:[print_sword] from main::@2 - (byte*) print_char_cursor#52 ← phi( main::@2/(byte*) print_char_cursor#48 ) + (byte*) print_char_cursor#55 ← phi( main::@2/(byte*) print_char_cursor#51 ) (signed word) print_sword::w#2 ← phi( main::@2/(signed word) print_sword::w#1 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#52 print_sword::@4/(byte*) print_char_cursor#4 ) - (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#2 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#3 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#24 ← phi( print_sword::@1/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#24 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#2 ) - (byte*) print_char_cursor#44 ← phi( print_sword/(byte*) print_char_cursor#52 ) + (byte*) print_char_cursor#45 ← phi( print_sword/(byte*) print_char_cursor#55 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#4 ← phi( print_sword::@2/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#25 ← phi( print_sword::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#25 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#3 ← phi( print_sword::@1/(signed word) print_sword::w#5 ) + (byte*) print_char_cursor#25 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#25 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#3 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#26 ← phi( print_sword::@3/(byte*) print_char_cursor#3 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#26 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#7 ← phi( print_sword/(signed word) print_sword::w#2 ) + (byte*) print_char_cursor#46 ← phi( print_sword/(byte*) print_char_cursor#55 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#6 ← phi( print_sword::@3/(signed word) print_sword::w#7 ) + (byte*) print_char_cursor#26 ← phi( print_sword::@3/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#26 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#47 ← phi( print_sword::@5/(byte*) print_char_cursor#3 print_sword::@6/(byte*) print_char_cursor#4 ) + (signed word) print_sword::w#4 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#6 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#4 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#27 ← phi( print_sword::@2/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#27 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#28 ← phi( print_sword::@7/(byte*) print_char_cursor#5 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#28 return to:@return -print_word: scope:[print_word] from print_sword::@1 - (byte*) print_char_cursor#45 ← phi( print_sword::@1/(byte*) print_char_cursor#43 ) - (word) print_word::w#1 ← phi( print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from print_sword::@2 + (byte*) print_char_cursor#48 ← phi( print_sword::@2/(byte*) print_char_cursor#47 ) + (word) print_word::w#1 ← phi( print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#1 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#2 ← phi( print_word/(word) print_word::w#1 ) - (byte*) print_char_cursor#27 ← phi( print_word/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#27 + (byte*) print_char_cursor#29 ← phi( print_word/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#29 (byte~) print_word::$2 ← < (word) print_word::w#2 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#28 ← phi( print_word::@1/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#28 + (byte*) print_char_cursor#30 ← phi( print_word::@1/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#30 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#29 ← phi( print_word::@2/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29 + (byte*) print_char_cursor#31 ← phi( print_word::@2/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#31 return to:@return @32: scope:[] from @20 (byte*) print_screen#7 ← phi( @20/(byte*) print_screen#0 ) - (byte*) print_char_cursor#55 ← phi( @20/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#58 ← phi( @20/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#15 ← phi( @20/(byte*) print_line_cursor#0 ) (word) rem16u#28 ← phi( @20/(word) rem16u#29 ) (byte[]) print_hextab#0 ← (const string) $0 to:@40 print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#49 ← phi( print_word/(byte*) print_char_cursor#48 print_word::@1/(byte*) print_char_cursor#7 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4 - (byte) print_char::ch#1 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char 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*) print_char_cursor#30 ← phi( print_byte/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#30 + (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#32 (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f - (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#31 ← phi( print_byte::@1/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#31 + (byte*) print_char_cursor#33 ← phi( print_byte::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#33 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#32 ← phi( print_byte::@2/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#32 + (byte*) print_char_cursor#34 ← phi( print_byte::@2/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#34 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#9 print_sword::@2/(byte*) print_char_cursor#44 ) - (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 - (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#49 print_byte::@1/(byte*) print_char_cursor#10 print_sword::@1/(byte*) print_char_cursor#45 print_sword::@3/(byte*) print_char_cursor#46 ) + (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 + (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#34 ← phi( print_char/(byte*) print_char_cursor#12 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#34 + (byte*) print_char_cursor#36 ← phi( print_char/(byte*) print_char_cursor#13 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#36 return to:@return print_cls: scope:[print_cls] from main::@5 @@ -576,17 +587,17 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#1 ← (byte*) print_screen#3 - (byte*) print_char_cursor#14 ← (byte*) print_line_cursor#1 + (byte*) print_char_cursor#15 ← (byte*) print_line_cursor#1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#35 ← phi( print_cls::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#37 ← phi( print_cls::@2/(byte*) print_char_cursor#15 ) (byte*) print_line_cursor#6 ← phi( print_cls::@2/(byte*) print_line_cursor#1 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#6 - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#35 + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#37 return to:@return main: scope:[main] from @40 - (byte*) print_char_cursor#53 ← phi( @40/(byte*) print_char_cursor#50 ) + (byte*) print_char_cursor#56 ← phi( @40/(byte*) print_char_cursor#53 ) (byte*) print_line_cursor#13 ← phi( @40/(byte*) print_line_cursor#12 ) (byte*) print_screen#5 ← phi( @40/(byte*) print_screen#6 ) (word) rem16u#23 ← phi( @40/(word) rem16u#25 ) @@ -597,7 +608,7 @@ main: scope:[main] from @40 call sin16s_gen to:main::@5 main::@5: scope:[main] from main - (byte*) print_char_cursor#47 ← phi( main/(byte*) print_char_cursor#53 ) + (byte*) print_char_cursor#50 ← phi( main/(byte*) print_char_cursor#56 ) (byte*) print_line_cursor#10 ← phi( main/(byte*) print_line_cursor#13 ) (byte*) print_screen#4 ← phi( main/(byte*) print_screen#5 ) (word) rem16u#17 ← phi( main/(word) rem16u#7 ) @@ -606,16 +617,16 @@ main::@5: scope:[main] from main to:main::@6 main::@6: scope:[main] from main::@5 (word) rem16u#34 ← phi( main::@5/(word) rem16u#8 ) - (byte*) print_char_cursor#36 ← phi( main::@5/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#38 ← phi( main::@5/(byte*) print_char_cursor#16 ) (byte*) print_line_cursor#7 ← phi( main::@5/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#7 - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#36 + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#38 (signed word*) main::st1#0 ← (signed word[$78]) main::sintab1#0 to:main::@1 main::@1: scope:[main] from main::@6 main::@8 (byte*) print_line_cursor#17 ← phi( main::@6/(byte*) print_line_cursor#3 main::@8/(byte*) print_line_cursor#11 ) (word) rem16u#32 ← phi( main::@6/(word) rem16u#34 main::@8/(word) rem16u#24 ) - (byte*) print_char_cursor#54 ← phi( main::@6/(byte*) print_char_cursor#16 main::@8/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#57 ← phi( main::@6/(byte*) print_char_cursor#17 main::@8/(byte*) print_char_cursor#19 ) (signed word*) main::st1#2 ← phi( main::@6/(signed word*) main::st1#0 main::@8/(signed word*) main::st1#1 ) (signed word) main::sw#0 ← *((signed word*) main::st1#2) (bool~) main::$2 ← (signed word) main::sw#0 >= (number) 0 @@ -626,7 +637,7 @@ main::@2: scope:[main] from main::@1 main::@9 (byte*) print_line_cursor#16 ← phi( main::@1/(byte*) print_line_cursor#17 main::@9/(byte*) print_line_cursor#18 ) (word) rem16u#30 ← phi( main::@1/(word) rem16u#32 main::@9/(word) rem16u#33 ) (signed word*) main::st1#5 ← phi( main::@1/(signed word*) main::st1#2 main::@9/(signed word*) main::st1#6 ) - (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#54 main::@9/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#57 main::@9/(byte*) print_char_cursor#20 ) (signed word) main::sw#1 ← phi( main::@1/(signed word) main::sw#0 main::@9/(signed word) main::sw#2 ) (signed word) print_sword::w#1 ← (signed word) main::sw#1 call print_sword @@ -635,8 +646,8 @@ main::@7: scope:[main] from main::@2 (byte*) print_line_cursor#14 ← phi( main::@2/(byte*) print_line_cursor#16 ) (word) rem16u#27 ← phi( main::@2/(word) rem16u#30 ) (signed word*) main::st1#4 ← phi( main::@2/(signed word*) main::st1#5 ) - (byte*) print_char_cursor#37 ← phi( main::@2/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#37 + (byte*) print_char_cursor#39 ← phi( main::@2/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#39 (byte*) print_str::str#1 ← (const string) main::str call print_str to:main::@8 @@ -644,8 +655,8 @@ main::@8: scope:[main] from main::@7 (byte*) print_line_cursor#11 ← phi( main::@7/(byte*) print_line_cursor#14 ) (word) rem16u#24 ← phi( main::@7/(word) rem16u#27 ) (signed word*) main::st1#3 ← phi( main::@7/(signed word*) main::st1#4 ) - (byte*) print_char_cursor#38 ← phi( main::@7/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#38 + (byte*) print_char_cursor#40 ← phi( main::@7/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#40 (signed word*) main::st1#1 ← (signed word*) main::st1#3 + (const byte) SIZEOF_SIGNED_WORD (word~) main::$9 ← (word) main::wavelength#0 * (const byte) SIZEOF_SIGNED_WORD (signed word*~) main::$7 ← (signed word[$78]) main::sintab1#0 + (word~) main::$9 @@ -657,7 +668,7 @@ main::@3: scope:[main] from main::@1 (word) rem16u#35 ← phi( main::@1/(word) rem16u#32 ) (signed word*) main::st1#7 ← phi( main::@1/(signed word*) main::st1#2 ) (signed word) main::sw#3 ← phi( main::@1/(signed word) main::sw#0 ) - (byte*) print_char_cursor#49 ← phi( main::@1/(byte*) print_char_cursor#54 ) + (byte*) print_char_cursor#52 ← phi( main::@1/(byte*) print_char_cursor#57 ) (byte*) print_str::str#2 ← (const string) main::str1 call print_str to:main::@9 @@ -666,32 +677,32 @@ main::@9: scope:[main] from main::@3 (word) rem16u#33 ← phi( main::@3/(word) rem16u#35 ) (signed word*) main::st1#6 ← phi( main::@3/(signed word*) main::st1#7 ) (signed word) main::sw#2 ← phi( main::@3/(signed word) main::sw#3 ) - (byte*) print_char_cursor#39 ← phi( main::@3/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#39 + (byte*) print_char_cursor#41 ← phi( main::@3/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#41 to:main::@2 main::@return: scope:[main] from main::@8 - (byte*) print_char_cursor#40 ← phi( main::@8/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#42 ← phi( main::@8/(byte*) print_char_cursor#19 ) (byte*) print_line_cursor#8 ← phi( main::@8/(byte*) print_line_cursor#11 ) (word) rem16u#18 ← phi( main::@8/(word) rem16u#24 ) (word) rem16u#9 ← (word) rem16u#18 (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#8 - (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#40 + (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#42 return to:@return @40: scope:[] from @32 (byte*) print_screen#6 ← phi( @32/(byte*) print_screen#7 ) - (byte*) print_char_cursor#50 ← phi( @32/(byte*) print_char_cursor#55 ) + (byte*) print_char_cursor#53 ← phi( @32/(byte*) print_char_cursor#58 ) (byte*) print_line_cursor#12 ← phi( @32/(byte*) print_line_cursor#15 ) (word) rem16u#25 ← phi( @32/(word) rem16u#28 ) call main to:@41 @41: scope:[] from @40 - (byte*) print_char_cursor#41 ← phi( @40/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#43 ← phi( @40/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#9 ← phi( @40/(byte*) print_line_cursor#4 ) (word) rem16u#19 ← phi( @40/(word) rem16u#9 ) (word) rem16u#10 ← (word) rem16u#19 (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9 - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41 + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#43 to:@end @end: scope:[] from @41 @@ -960,6 +971,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#1 (byte) print_char::ch#2 (byte) print_char::ch#3 +(byte) print_char::ch#4 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -1013,6 +1025,9 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#53 (byte*) print_char_cursor#54 (byte*) print_char_cursor#55 +(byte*) print_char_cursor#56 +(byte*) print_char_cursor#57 +(byte*) print_char_cursor#58 (byte*) print_char_cursor#6 (byte*) print_char_cursor#7 (byte*) print_char_cursor#8 @@ -1073,13 +1088,14 @@ SYMBOL TABLE SSA (byte*) print_str::str#5 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -1088,6 +1104,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#3 (signed word) print_sword::w#4 (signed word) print_sword::w#5 +(signed word) print_sword::w#6 +(signed word) print_sword::w#7 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -1325,7 +1343,7 @@ Inlining cast (byte) mulu16_sel::select#4 ← (unumber)(number) 0 Inlining cast (signed word~) sin16s::$14 ← (signed word)(word) sin16s::usinx#1 Inlining cast (signed word~) sin16s::$19 ← (signed word)(word) sin16s::usinx#3 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#3 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#4 Inlining cast (word) main::wavelength#0 ← (unumber)(number) $78 Successful SSA optimization Pass2InlineCast Simplifying constant integer cast 0 @@ -1415,8 +1433,7 @@ Inversing boolean not [75] (bool~) mul16u::$3 ← (byte~) mul16u::$1 == (byte) 0 Inversing boolean not [124] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [123] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 Inversing boolean not [128] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [127] (bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 Inversing boolean not [187] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 == (byte) 0 from [186] (bool~) sin16s::$15 ← (byte) sin16s::isUpper#2 != (byte) 0 -Inversing boolean not [231] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (signed byte) 0 from [230] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (signed byte) 0 -Inversing boolean not [316] (bool~) main::$3 ← (signed word) main::sw#0 < (signed byte) 0 from [315] (bool~) main::$2 ← (signed word) main::sw#0 >= (signed byte) 0 +Inversing boolean not [320] (bool~) main::$3 ← (signed word) main::sw#0 < (signed byte) 0 from [319] (bool~) main::$2 ← (signed word) main::sw#0 >= (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 @@ -1491,46 +1508,47 @@ Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$20 Alias (dword) mul16u::return#2 = (dword) mul16u::return#4 Alias (byte) mulu16_sel::select#5 = (byte) mulu16_sel::select#6 Alias (word) mulu16_sel::return#12 = (word) mulu16_sel::return#5 (word~) mulu16_sel::$2 (word) mulu16_sel::return#6 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#15 (byte*) print_char_cursor#55 (byte*) print_screen#7 (byte*) print_line_cursor#12 (byte*) print_char_cursor#50 (byte*) print_screen#6 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#15 (byte*) print_char_cursor#58 (byte*) print_screen#7 (byte*) print_line_cursor#12 (byte*) print_char_cursor#53 (byte*) print_screen#6 Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#42 (byte*) print_char_cursor#23 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#3 (byte*) print_char_cursor#26 (byte*) print_char_cursor#5 -Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#52 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#4 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#23 (byte*) print_char_cursor#44 (byte*) print_char_cursor#24 +Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#46 +Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 +Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#3 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#4 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#28 (byte*) print_char_cursor#6 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#6 +Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#7 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#29 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#31 (byte*) print_char_cursor#9 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#32 (byte*) print_char_cursor#11 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#13 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#14 (byte*) print_line_cursor#6 (byte*) print_char_cursor#35 (byte*) print_line_cursor#2 (byte*) print_char_cursor#15 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#32 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#34 (byte*) print_char_cursor#12 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#14 +Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#15 (byte*) print_line_cursor#6 (byte*) print_char_cursor#37 (byte*) print_line_cursor#2 (byte*) print_char_cursor#16 Alias (byte*) print_screen#4 = (byte*) print_screen#5 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 -Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#53 +Alias (byte*) print_char_cursor#50 = (byte*) print_char_cursor#56 Alias (word) rem16u#17 = (word) rem16u#8 (word) rem16u#34 Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#38 Alias (signed word[$78]) main::sintab1#0 = (signed word*) main::st1#0 Alias (signed word*) main::st1#3 = (signed word*) main::st1#4 (signed word*) main::st1#5 Alias (word) rem16u#18 = (word) rem16u#27 (word) rem16u#30 (word) rem16u#24 (word) rem16u#9 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#16 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#40 (byte*) print_char_cursor#20 -Alias (byte*) print_char_cursor#49 = (byte*) print_char_cursor#54 +Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#42 (byte*) print_char_cursor#21 +Alias (byte*) print_char_cursor#52 = (byte*) print_char_cursor#57 Alias (signed word) main::sw#0 = (signed word) main::sw#3 (signed word) main::sw#2 Alias (signed word*) main::st1#2 = (signed word*) main::st1#7 (signed word*) main::st1#6 Alias (word) rem16u#32 = (word) rem16u#35 (word) rem16u#33 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#18 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#41 Alias (word) rem16u#10 = (word) rem16u#19 Alias (byte*) print_line_cursor#5 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#41 +Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#43 Successful SSA optimization Pass2AliasElimination Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 @@ -1570,32 +1588,37 @@ Identical Phi Values (word) sin16s_gen::wavelength#2 (word) sin16s_gen::waveleng Identical Phi Values (word) rem16u#16 (word) rem16u#15 Identical Phi Values (dword) sin16s::x#3 (dword) sin16s::x#0 Identical Phi Values (signed word) print_sword::w#2 (signed word) print_sword::w#1 -Identical Phi Values (byte*) print_char_cursor#44 (byte*) print_char_cursor#48 -Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#28 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_char_cursor#51 +Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#30 Identical Phi Values (word) print_word::w#1 (word) print_word::w#0 -Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_char_cursor#43 -Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#48 (byte*) print_char_cursor#47 +Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#13 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#1 (byte*) print_screen#1 Identical Phi Values (word) rem16u#23 (word) rem16u#0 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#50 (byte*) print_line_cursor#0 Identical Phi Values (word) rem16u#17 (word) rem16u#16 Identical Phi Values (byte*) print_line_cursor#3 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_line_cursor#1 Identical Phi Values (word) rem16u#18 (word) rem16u#17 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#3 -Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#27 Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#2 Identical Phi Values (word) rem16u#10 (word) rem16u#18 Identical Phi Values (byte*) print_line_cursor#5 (byte*) print_line_cursor#11 -Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#19 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#49 (byte*) print_char_cursor#13 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) divr16u::$4 [11] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 Simple Condition (bool~) divr16u::$9 [19] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 @@ -1607,13 +1630,13 @@ Simple Condition (bool~) sin16s::$1 [125] if((dword) sin16s::x#0<(dword) PI_u4f2 Simple Condition (bool~) sin16s::$3 [129] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 Simple Condition (bool~) sin16s::$16 [188] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@3 Simple Condition (bool~) print_str::$0 [221] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_sword::$1 [232] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_cls::$1 [292] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) main::$3 [317] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 -Simple Condition (bool~) main::$8 [331] if((signed word*) main::st1#1<(signed word*~) main::$7) goto main::@1 +Simple Condition (bool~) print_sword::$0 [231] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_cls::$1 [296] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) main::$3 [321] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 +Simple Condition (bool~) main::$8 [335] if((signed word*) main::st1#1<(signed word*~) main::$7) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [155] (word) mulu16_sel::v2#2 ← (unumber)(number) $10000/(number) 6 -Constant right-side identified [302] (signed word[$78]) main::sintab1#0 ← { fill( $78, 0) } +Constant right-side identified [306] (signed word[$78]) main::sintab1#0 ← { fill( $78, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 @@ -1635,6 +1658,7 @@ Constant (const byte) mulu16_sel::select#3 = 0 Constant (const byte) mulu16_sel::select#4 = 0 Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' +Constant (const byte) print_char::ch#1 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const word) main::wavelength#0 = $78 Constant (const signed word[$78]) main::sintab1#0 = { fill( $78, 0) } @@ -1663,15 +1687,15 @@ Finalized unsigned number type (byte) $10 Successful SSA optimization PassNFinalizeNumberTypeConversions Constant right-side identified [18] (word) divr16u::dividend#1 ← > (const dword) div32u16u::dividend#0 Constant right-side identified [22] (word) divr16u::dividend#2 ← < (const dword) div32u16u::dividend#0 -Constant right-side identified [136] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 -Constant right-side identified [149] (word~) main::$9 ← (const word) main::wavelength#0 * (const byte) SIZEOF_SIGNED_WORD +Constant right-side identified [137] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [150] (word~) main::$9 ← (const word) main::wavelength#0 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) divr16u::dividend#1 = >div32u16u::dividend#0 Constant (const word) divr16u::dividend#2 = (const dword) PI2_u4f28#0 Constant inlined divr16u::dividend#2 = <(const dword) PI2_u4f28#0 Constant inlined sin16s_gen::sintab#1 = (const signed word[$78]) main::sintab1#0 +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined mulu16_sel::v2#2 = (word)(number) $10000/(number) 6 Constant inlined print_char::ch#0 = (byte) '-' Constant inlined sin16s_gen::x#0 = (byte) 0 @@ -1743,7 +1769,6 @@ Added new block during phi lifting sin16s::@13(between sin16s and sin16s::@1) Fixing phi predecessor for sin16s::isUpper#2 to new block ( sin16s -> sin16s::@13 ) during phi lifting. Added new block during phi lifting sin16s::@14(between sin16s::@1 and sin16s::@2) Added new block during phi lifting sin16s::@15(between sin16s::@12 and sin16s::@3) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting main::@10(between main::@8 and main::@1) Added new block during phi lifting main::@11(between main::@1 and main::@2) @@ -1758,7 +1783,7 @@ Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@6 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 Adding NOP phi() at start of print_cls @@ -1769,76 +1794,73 @@ Adding NOP phi() at start of div32u16u CALL GRAPH Calls in [] to main:6 Calls in [main] to sin16s_gen:10 print_cls:12 print_str:18 print_sword:22 print_str:24 -Calls in [print_sword] to print_char:44 print_word:50 -Calls in [print_word] to print_byte:58 print_byte:62 -Calls in [print_byte] to print_char:70 print_char:75 -Calls in [sin16s_gen] to div32u16u:91 sin16s:96 -Calls in [sin16s] to mulu16_sel:122 mulu16_sel:129 mulu16_sel:134 mulu16_sel:142 mulu16_sel:149 -Calls in [mulu16_sel] to mul16u:165 -Calls in [div32u16u] to divr16u:189 divr16u:194 +Calls in [print_sword] to print_char:44 print_word:48 print_char:52 +Calls in [print_word] to print_byte:61 print_byte:64 +Calls in [print_byte] to print_char:72 print_char:77 +Calls in [sin16s_gen] to div32u16u:89 sin16s:94 +Calls in [sin16s] to mulu16_sel:120 mulu16_sel:127 mulu16_sel:132 mulu16_sel:140 mulu16_sel:147 +Calls in [mulu16_sel] to mul16u:163 +Calls in [div32u16u] to divr16u:187 divr16u:192 -Created 37 initial phi equivalence classes -Coalesced [17] print_char_cursor#56 ← print_char_cursor#49 +Created 35 initial phi equivalence classes +Coalesced [17] print_char_cursor#59 ← print_char_cursor#52 Coalesced [19] print_char_cursor#69 ← print_char_cursor#2 -Coalesced [23] print_char_cursor#57 ← print_char_cursor#12 +Coalesced [23] print_char_cursor#60 ← print_char_cursor#13 Coalesced [28] main::st1#8 ← main::st1#1 Coalesced [29] print_char_cursor#67 ← print_char_cursor#2 -Coalesced (already) [30] print_char_cursor#68 ← print_char_cursor#49 +Coalesced (already) [30] print_char_cursor#68 ← print_char_cursor#52 Coalesced [32] print_str::str#6 ← print_str::str#5 -Coalesced (already) [33] print_char_cursor#58 ← print_char_cursor#51 +Coalesced (already) [33] print_char_cursor#61 ← print_char_cursor#54 Coalesced [40] print_str::str#7 ← print_str::str#0 -Coalesced [41] print_char_cursor#59 ← print_char_cursor#1 -Coalesced [43] print_char_cursor#66 ← print_char_cursor#48 -Coalesced [46] print_sword::w#7 ← print_sword::w#0 -Coalesced [47] print_char_cursor#61 ← print_char_cursor#12 -Coalesced [53] print_sword::w#6 ← print_sword::w#1 -Coalesced (already) [54] print_char_cursor#60 ← print_char_cursor#48 -Coalesced [56] print_byte::b#4 ← print_byte::b#0 -Coalesced [57] print_char_cursor#62 ← print_char_cursor#43 -Coalesced [60] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [61] print_char_cursor#63 ← print_char_cursor#12 -Coalesced [68] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [69] print_char_cursor#64 ← print_char_cursor#46 -Coalesced [73] print_char::ch#5 ← print_char::ch#2 -Coalesced (already) [74] print_char_cursor#65 ← print_char_cursor#12 -Coalesced [89] print_cls::sc#3 ← print_cls::sc#1 -Coalesced [105] sin16s_gen::x#4 ← sin16s_gen::x#1 -Coalesced [106] sin16s_gen::sintab#6 ← sin16s_gen::sintab#0 -Coalesced [107] sin16s_gen::i#4 ← sin16s_gen::i#1 -Coalesced [110] sin16s::x#9 ← sin16s::x#1 -Coalesced [114] sin16s::x#11 ← sin16s::x#2 -Coalesced [120] mulu16_sel::v1#8 ← mulu16_sel::v1#0 -Coalesced [121] mulu16_sel::v2#8 ← mulu16_sel::v2#0 -Coalesced [127] mulu16_sel::v1#9 ← mulu16_sel::v1#1 -Coalesced [128] mulu16_sel::v2#9 ← mulu16_sel::v2#1 -Coalesced [133] mulu16_sel::v1#10 ← mulu16_sel::v1#2 -Coalesced [140] mulu16_sel::v1#6 ← mulu16_sel::v1#3 -Coalesced [141] mulu16_sel::v2#6 ← mulu16_sel::v2#3 -Coalesced [147] mulu16_sel::v1#7 ← mulu16_sel::v1#4 -Coalesced [148] mulu16_sel::v2#7 ← mulu16_sel::v2#4 -Coalesced [156] sin16s::return#6 ← sin16s::sinx#1 -Coalesced [160] sin16s::x#10 ← sin16s::x#4 -Coalesced [161] sin16s::x#8 ← sin16s::x#0 -Coalesced [171] mul16u::a#7 ← mul16u::a#1 -Coalesced [172] mul16u::mb#6 ← mul16u::b#0 -Coalesced [180] mul16u::res#9 ← mul16u::res#1 -Coalesced [184] mul16u::a#8 ← mul16u::a#0 -Coalesced [185] mul16u::res#7 ← mul16u::res#6 -Coalesced [186] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [187] mul16u::res#8 ← mul16u::res#2 -Coalesced [193] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [200] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [201] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [208] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [215] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [216] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [222] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [223] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [224] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [225] divr16u::i#7 ← divr16u::i#1 -Coalesced [226] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [227] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [228] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [41] print_char_cursor#62 ← print_char_cursor#1 +Coalesced [43] print_char_cursor#66 ← print_char_cursor#51 +Coalesced [45] print_sword::w#9 ← print_sword::w#1 +Coalesced (already) [51] print_char_cursor#65 ← print_char_cursor#51 +Coalesced [54] print_sword::w#8 ← print_sword::w#0 +Coalesced [60] print_byte::b#4 ← print_byte::b#0 +Coalesced [63] print_byte::b#5 ← print_byte::b#1 +Coalesced [70] print_char::ch#5 ← print_char::ch#2 +Coalesced (already) [71] print_char_cursor#63 ← print_char_cursor#13 +Coalesced [75] print_char::ch#6 ← print_char::ch#3 +Coalesced (already) [76] print_char_cursor#64 ← print_char_cursor#13 +Coalesced [87] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [103] sin16s_gen::x#4 ← sin16s_gen::x#1 +Coalesced [104] sin16s_gen::sintab#6 ← sin16s_gen::sintab#0 +Coalesced [105] sin16s_gen::i#4 ← sin16s_gen::i#1 +Coalesced [108] sin16s::x#9 ← sin16s::x#1 +Coalesced [112] sin16s::x#11 ← sin16s::x#2 +Coalesced [118] mulu16_sel::v1#8 ← mulu16_sel::v1#0 +Coalesced [119] mulu16_sel::v2#8 ← mulu16_sel::v2#0 +Coalesced [125] mulu16_sel::v1#9 ← mulu16_sel::v1#1 +Coalesced [126] mulu16_sel::v2#9 ← mulu16_sel::v2#1 +Coalesced [131] mulu16_sel::v1#10 ← mulu16_sel::v1#2 +Coalesced [138] mulu16_sel::v1#6 ← mulu16_sel::v1#3 +Coalesced [139] mulu16_sel::v2#6 ← mulu16_sel::v2#3 +Coalesced [145] mulu16_sel::v1#7 ← mulu16_sel::v1#4 +Coalesced [146] mulu16_sel::v2#7 ← mulu16_sel::v2#4 +Coalesced [154] sin16s::return#6 ← sin16s::sinx#1 +Coalesced [158] sin16s::x#10 ← sin16s::x#4 +Coalesced [159] sin16s::x#8 ← sin16s::x#0 +Coalesced [169] mul16u::a#7 ← mul16u::a#1 +Coalesced [170] mul16u::mb#6 ← mul16u::b#0 +Coalesced [178] mul16u::res#9 ← mul16u::res#1 +Coalesced [182] mul16u::a#8 ← mul16u::a#0 +Coalesced [183] mul16u::res#7 ← mul16u::res#6 +Coalesced [184] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [185] mul16u::res#8 ← mul16u::res#2 +Coalesced [191] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [198] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [199] divr16u::dividend#9 ← divr16u::dividend#5 +Coalesced [206] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [213] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [214] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [220] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [221] divr16u::dividend#10 ← divr16u::dividend#0 +Coalesced [222] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [223] divr16u::i#7 ← divr16u::i#1 +Coalesced [224] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [225] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [226] divr16u::rem#15 ← divr16u::rem#0 Coalesced down to 23 phi equivalence classes Culled Empty Block (label) @2 Culled Empty Block (label) @13 @@ -1849,8 +1871,8 @@ Culled Empty Block (label) main::@6 Culled Empty Block (label) main::@9 Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@11 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_cls::@2 @@ -1877,7 +1899,7 @@ Renumbering block sin16s::@11 to sin16s::@10 Renumbering block sin16s::@12 to sin16s::@11 Renumbering block sin16s::@15 to sin16s::@12 Renumbering block mulu16_sel::@2 to mulu16_sel::@1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block main::@5 to main::@4 Renumbering block main::@7 to main::@5 Renumbering block main::@8 to main::@6 @@ -1888,7 +1910,8 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@4 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@5 -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of print_cls Adding NOP phi() at start of sin16s_gen Adding NOP phi() at start of mul16u @@ -1913,7 +1936,7 @@ main::@4: scope:[main] from main [7] call print_cls to:main::@1 main::@1: scope:[main] from main::@4 main::@6 - [8] (byte*) print_char_cursor#49 ← phi( main::@4/(const byte*) print_line_cursor#0 main::@6/(byte*) print_char_cursor#2 ) + [8] (byte*) print_char_cursor#52 ← phi( main::@4/(const byte*) print_line_cursor#0 main::@6/(byte*) print_char_cursor#2 ) [8] (signed word*) main::st1#2 ← phi( main::@4/(const signed word[$78]) main::sintab1#0 main::@6/(signed word*) main::st1#1 ) [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [10] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 @@ -1923,7 +1946,7 @@ main::@3: scope:[main] from main::@1 [12] call print_str to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [13] (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#49 main::@3/(byte*) print_char_cursor#2 ) + [13] (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#52 main::@3/(byte*) print_char_cursor#2 ) [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [15] call print_sword to:main::@5 @@ -1939,11 +1962,11 @@ main::@return: scope:[main] from main::@6 [20] return to:@return print_str: scope:[print_str] from main::@3 main::@5 - [21] (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@5/(byte*) print_char_cursor#12 ) + [21] (byte*) print_char_cursor#54 ← phi( main::@3/(byte*) print_char_cursor#52 main::@5/(byte*) print_char_cursor#13 ) [21] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@5/(const string) main::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [22] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 ) + [22] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#54 print_str::@2/(byte*) print_char_cursor#1 ) [22] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -1956,264 +1979,266 @@ print_str::@2: scope:[print_str] from print_str::@1 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 to:print_str::@1 print_sword: scope:[print_sword] from main::@2 - [28] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [29] phi() [30] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [32] (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#48 print_sword::@3/(byte*) print_char_cursor#12 ) - [32] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [33] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [34] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [31] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [33] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [35] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [34] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [37] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [39] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [40] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [41] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 ) - [41] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [43] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [44] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [46] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [47] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [48] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - [49] (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#48 ) - [49] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [50] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 - [51] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 +print_sword::@1: scope:[print_sword] from print_sword + [35] phi() + [36] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [38] (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#51 print_sword::@3/(byte*) print_char_cursor#51 ) + [38] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 + [40] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [52] return + [41] return + to:@return +print_word: scope:[print_word] from print_sword::@2 + [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [43] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [45] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [46] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [47] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [50] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [52] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [53] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [54] return to:@return print_cls: scope:[print_cls] from main::@4 - [53] phi() + [55] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [54] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [55] *((byte*) print_cls::sc#2) ← (byte) ' ' - [56] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [57] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 + [56] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [57] *((byte*) print_cls::sc#2) ← (byte) ' ' + [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [59] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [58] return + [60] return to:@return sin16s_gen: scope:[sin16s_gen] from main - [59] phi() - [60] call div32u16u - [61] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + [61] phi() + [62] call div32u16u + [63] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 to:sin16s_gen::@2 sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen - [62] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + [64] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 to:sin16s_gen::@1 sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3 - [63] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 ) - [63] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 ) - [63] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 ) - [64] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 - [65] call sin16s - [66] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + [65] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 ) + [65] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 ) + [65] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 ) + [66] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 + [67] call sin16s + [68] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 to:sin16s_gen::@3 sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1 - [67] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - [68] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 - [69] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD - [70] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 - [71] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 - [72] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 + [69] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + [70] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 + [71] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [72] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 + [73] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 + [74] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 to:sin16s_gen::@return sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@3 - [73] return + [75] return to:@return sin16s: scope:[sin16s] from sin16s_gen::@1 - [74] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [76] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [75] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [77] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [76] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) - [76] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [77] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [78] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) + [78] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [79] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [78] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [80] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [79] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [80] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 - [81] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [82] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [83] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [84] call mulu16_sel - [85] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [81] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [82] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 + [83] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [84] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [85] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [86] call mulu16_sel + [87] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [86] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [87] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [88] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [89] call mulu16_sel - [90] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [88] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [89] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [90] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [91] call mulu16_sel + [92] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [91] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [92] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [93] call mulu16_sel - [94] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [93] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [94] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [95] call mulu16_sel + [96] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [95] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [96] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [97] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [98] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [99] call mulu16_sel - [100] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [97] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [98] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [99] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [100] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [101] call mulu16_sel + [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [101] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [102] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [103] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [104] call mulu16_sel - [105] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [103] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [104] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [105] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [106] call mulu16_sel + [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [106] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [107] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 - [108] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [109] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 + [108] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [109] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 + [110] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [111] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [110] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [112] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [111] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [113] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [112] return + [114] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [113] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [115] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 - [114] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 ) - [114] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 ) - [114] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) - [115] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 - [116] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 - [117] call mul16u - [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [116] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 ) + [116] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 ) + [116] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) + [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 + [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + [119] call mul16u + [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [119] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - [120] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [121] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [123] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [122] return + [124] return to:@return mul16u: scope:[mul16u] from mulu16_sel - [123] phi() + [125] phi() to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [124] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 ) - [124] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [124] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 ) - [125] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 + [126] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 ) + [126] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [126] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 ) + [127] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [126] return + [128] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [127] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 - [128] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 + [130] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [129] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [130] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [131] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 - [132] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [132] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 + [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 div32u16u: scope:[div32u16u] from sin16s_gen - [133] phi() - [134] call divr16u - [135] (word) divr16u::return#2 ← (word) divr16u::return#0 + [135] phi() + [136] call divr16u + [137] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [136] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [137] (word) divr16u::rem#4 ← (word) rem16u#1 - [138] call divr16u - [139] (word) divr16u::return#3 ← (word) divr16u::return#0 + [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [139] (word) divr16u::rem#4 ← (word) rem16u#1 + [140] call divr16u + [141] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [140] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [141] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [142] return + [144] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [143] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) - [143] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [145] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) + [145] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [144] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [144] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [144] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [144] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [145] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [146] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [147] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [148] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [146] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [146] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [146] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [146] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [150] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [149] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [150] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [151] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [152] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [153] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 + [152] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [154] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [155] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 + [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [156] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [156] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [157] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [158] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [158] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [158] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [160] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [159] (word) rem16u#1 ← (word) divr16u::rem#11 + [161] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [160] return + [162] return to:@return @@ -2319,19 +2344,17 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#2 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#1 4.0 (byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 6.0 +(byte) print_char::ch#3 4.0 +(byte) print_char::ch#4 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#12 1.1176470588235294 +(byte*) print_char_cursor#13 0.7083333333333334 (byte*) print_char_cursor#2 40.875 -(byte*) print_char_cursor#33 5.0 -(byte*) print_char_cursor#43 2.0 -(byte*) print_char_cursor#46 2.0 -(byte*) print_char_cursor#48 6.5 -(byte*) print_char_cursor#49 8.25 -(byte*) print_char_cursor#51 24.0 +(byte*) print_char_cursor#35 6.0 +(byte*) print_char_cursor#51 5.200000000000001 +(byte*) print_char_cursor#52 8.25 +(byte*) print_char_cursor#54 24.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -2347,8 +2370,8 @@ VARIABLE REGISTER WEIGHTS (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w (signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 4.25 -(signed word) print_sword::w#3 4.0 +(signed word) print_sword::w#1 2.8333333333333335 +(signed word) print_sword::w#4 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 2.0 @@ -2406,10 +2429,10 @@ Not consolidating phi with different size mul16u::mb#2 mul16u::b#0 Initial phi equivalence classes [ main::st1#2 main::st1#1 ] [ print_str::str#3 print_str::str#5 print_str::str#0 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] [ print_cls::sc#2 print_cls::sc#1 ] [ sin16s_gen::x#2 sin16s_gen::x#1 ] [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] @@ -2467,10 +2490,10 @@ Added variable rem16u#1 to zero page equivalence class [ rem16u#1 ] Complete equivalence classes [ main::st1#2 main::st1#1 ] [ print_str::str#3 print_str::str#5 print_str::str#0 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] [ print_cls::sc#2 print_cls::sc#1 ] [ sin16s_gen::x#2 sin16s_gen::x#1 ] [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] @@ -2527,10 +2550,10 @@ Complete equivalence classes [ rem16u#1 ] Allocated zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] Allocated zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Allocated zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -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#3 print_char::ch#1 print_char::ch#2 ] -Allocated zp ZP_WORD:10 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] +Allocated zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Allocated zp ZP_BYTE:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Allocated zp ZP_WORD:9 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] +Allocated zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] Allocated zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] @@ -2603,7 +2626,7 @@ INITIAL ASM .const PI_HALF_u4f28 = $1921fb54 .label print_line_cursor = $400 .label rem16u = $84 - .label print_char_cursor = $a + .label print_char_cursor = 9 //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -2626,7 +2649,7 @@ main: { .label sw = $35 .label st1 = 2 //SEG11 [5] call sin16s_gen - //SEG12 [59] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG12 [61] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: jsr sin16s_gen //SEG13 [6] phi from main to main::@4 [phi:main->main::@4] @@ -2635,12 +2658,12 @@ main: { //SEG14 main::@4 b4: //SEG15 [7] call print_cls - //SEG16 [53] phi from main::@4 to print_cls [phi:main::@4->print_cls] + //SEG16 [55] phi from main::@4 to print_cls [phi:main::@4->print_cls] print_cls_from_b4: jsr print_cls //SEG17 [8] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG18 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) print_char_cursor#52 = (const byte*) print_line_cursor#0 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor @@ -2653,7 +2676,7 @@ main: { jmp b1 //SEG20 [8] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG21 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@6->main::@1#0] -- register_copy + //SEG21 [8] phi (byte*) print_char_cursor#52 = (byte*) print_char_cursor#2 [phi:main::@6->main::@1#0] -- register_copy //SEG22 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@6->main::@1#1] -- register_copy jmp b1 //SEG23 main::@1 @@ -2676,7 +2699,7 @@ main: { //SEG28 [12] call print_str //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG30 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG30 [21] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#52 [phi:main::@3->print_str#0] -- register_copy //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #main::@2] b2_from_b1: b2_from_b3: - //SEG33 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [13] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 //SEG34 main::@2 b2: @@ -2705,7 +2728,7 @@ main: { //SEG39 [17] call print_str //SEG40 [21] phi from main::@5 to print_str [phi:main::@5->print_str] print_str_from_b5: - //SEG41 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@5->print_str#0] -- register_copy + //SEG41 [21] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#13 [phi:main::@5->print_str#0] -- register_copy //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@5->print_str#1] -- pbuz1=pbuc1 lda #print_str::@1] b1_from_print_str: b1_from_b2: - //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#54 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG51 [22] 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 //SEG52 print_str::@1 @@ -2788,26 +2811,58 @@ print_str: { // print_sword(signed word zeropage(6) w) print_sword: { .label w = 6 - //SEG61 [28] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG61 [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG62 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG63 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG62 [29] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG63 print_sword::@3 + b3: //SEG64 [30] call print_char - //SEG65 [49] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG66 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG67 [49] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG65 [38] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG66 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG67 [38] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG68 [31] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG69 [31] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG70 print_sword::@2 + b2: + //SEG71 [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG72 [33] call print_word + jsr print_word + jmp breturn + //SEG73 print_sword::@return + breturn: + //SEG74 [34] return + rts + //SEG75 [35] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG76 print_sword::@1 + b1: + //SEG77 [36] call print_char + //SEG78 [38] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG79 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG80 [38] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG68 print_sword::@3 - b3: - //SEG69 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG81 print_sword::@4 + b4: + //SEG82 [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -2815,154 +2870,133 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG70 [32] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG71 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG72 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG73 print_sword::@1 - b1: - //SEG74 [33] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG75 [34] call print_word - jsr print_word + jmp b2_from_b4 +} +//SEG83 print_char +// Print a single char +// print_char(byte zeropage(8) ch) +print_char: { + .label ch = 8 + //SEG84 [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + lda ch + ldy #0 + sta (print_char_cursor),y + //SEG85 [40] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: jmp breturn - //SEG76 print_sword::@return + //SEG86 print_char::@return breturn: - //SEG77 [35] return + //SEG87 [41] return rts } -//SEG78 print_word +//SEG88 print_word // Print a word as HEX // print_word(word zeropage($37) w) print_word: { .label w = $37 - //SEG79 [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG89 [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG80 [37] call print_byte - //SEG81 [41] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG90 [43] call print_byte + //SEG91 [47] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG82 [41] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG83 [41] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG92 [47] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte jmp b1 - //SEG84 print_word::@1 + //SEG93 print_word::@1 b1: - //SEG85 [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG94 [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG86 [39] call print_byte - //SEG87 [41] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG95 [45] call print_byte + //SEG96 [47] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG88 [41] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG89 [41] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG97 [47] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte jmp breturn - //SEG90 print_word::@return + //SEG98 print_word::@return breturn: - //SEG91 [40] return + //SEG99 [46] return rts } -//SEG92 print_byte +//SEG100 print_byte // Print a byte as HEX -// print_byte(byte zeropage(8) b) +// print_byte(byte zeropage($b) b) print_byte: { .label _0 = $39 .label _2 = $3a - .label b = 8 - //SEG93 [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + .label b = $b + //SEG101 [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG94 [43] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG102 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG95 [44] call print_char - //SEG96 [49] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG103 [50] call print_char + //SEG104 [38] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG97 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG98 [49] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG105 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG106 [38] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG99 print_byte::@1 + //SEG107 print_byte::@1 b1: - //SEG100 [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG108 [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG101 [46] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG109 [52] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG102 [47] call print_char - //SEG103 [49] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG110 [53] call print_char + //SEG111 [38] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG104 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG105 [49] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG112 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG113 [38] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG106 print_byte::@return + //SEG114 print_byte::@return breturn: - //SEG107 [48] return + //SEG115 [54] return rts } -//SEG108 print_char -// Print a single char -// print_char(byte zeropage(9) ch) -print_char: { - .label ch = 9 - //SEG109 [50] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 - lda ch - ldy #0 - sta (print_char_cursor),y - //SEG110 [51] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - jmp breturn - //SEG111 print_char::@return - breturn: - //SEG112 [52] return - rts -} -//SEG113 print_cls +//SEG116 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $c - //SEG114 [54] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG117 [56] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG115 [54] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG118 [56] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG116 [54] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG119 [56] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG117 [54] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG120 [56] 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 + //SEG121 print_cls::@1 b1: - //SEG119 [55] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG122 [57] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG120 [56] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG123 [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG121 [57] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG124 [59] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1_from_b1 @@ -2970,12 +3004,12 @@ print_cls: { cmp #div32u16u] + //SEG128 [62] call div32u16u + //SEG129 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG127 [61] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG130 [63] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -3000,9 +3034,9 @@ sin16s_gen: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b2 - //SEG128 sin16s_gen::@2 + //SEG131 sin16s_gen::@2 b2: - //SEG129 [62] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG132 [64] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -3011,19 +3045,19 @@ sin16s_gen: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG130 [63] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] + //SEG133 [65] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] b1_from_b2: - //SEG131 [63] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG134 [65] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG132 [63] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG135 [65] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG133 [63] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG136 [65] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -3032,15 +3066,15 @@ sin16s_gen: { sta x+3 jmp b1 // u[4.28] - //SEG134 [63] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG137 [65] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG135 [63] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy - //SEG136 [63] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy - //SEG137 [63] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy + //SEG138 [65] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy + //SEG139 [65] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy + //SEG140 [65] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG138 sin16s_gen::@1 + //SEG141 sin16s_gen::@1 b1: - //SEG139 [64] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG142 [66] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -3049,29 +3083,29 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG140 [65] call sin16s + //SEG143 [67] call sin16s jsr sin16s - //SEG141 [66] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG144 [68] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b3 - //SEG142 sin16s_gen::@3 + //SEG145 sin16s_gen::@3 b3: - //SEG143 [67] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG146 [69] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta _1 lda sin16s.return+1 sta _1+1 - //SEG144 [68] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG147 [70] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG145 [69] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG148 [71] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -3079,7 +3113,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG146 [70] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG149 [72] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -3093,12 +3127,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG147 [71] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG150 [73] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG148 [72] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG151 [74] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b3 @@ -3108,12 +3142,12 @@ sin16s_gen: { bcc b1_from_b3 !: jmp breturn - //SEG149 sin16s_gen::@return + //SEG152 sin16s_gen::@return breturn: - //SEG150 [73] return + //SEG153 [75] return rts } -//SEG151 sin16s +//SEG154 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -3135,7 +3169,7 @@ sin16s: { .label sinx = $1b .label isUpper = $16 .label return_5 = $1b - //SEG152 [74] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG155 [76] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -3153,9 +3187,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG153 sin16s::@4 + //SEG156 sin16s::@4 b4: - //SEG154 [75] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG157 [77] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG155 [76] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG158 [78] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG156 [76] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG159 [78] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG157 [76] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG160 [78] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG158 [76] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG161 [78] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG159 [76] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG162 [78] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG160 [76] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG163 [78] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG161 sin16s::@1 + //SEG164 sin16s::@1 b1: - //SEG162 [77] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG165 [79] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -3203,9 +3237,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG163 sin16s::@5 + //SEG166 sin16s::@5 b5: - //SEG164 [78] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG167 [80] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG165 [79] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG168 [81] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG166 [79] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG169 [81] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG167 sin16s::@2 + //SEG170 sin16s::@2 b2: - //SEG168 [80] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 + //SEG171 [82] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 lda x sta _4 lda x+1 @@ -3243,107 +3277,107 @@ sin16s: { rol _4+3 dey bne !- - //SEG169 [81] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG172 [83] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG170 [82] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG173 [84] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG171 [83] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG174 [85] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG172 [84] call mulu16_sel - //SEG173 [114] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG175 [86] call mulu16_sel + //SEG176 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG174 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG177 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG175 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG176 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG178 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG179 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG177 [85] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG180 [87] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return lda mulu16_sel.return_12+1 sta mulu16_sel.return+1 jmp b7 - //SEG178 sin16s::@7 + //SEG181 sin16s::@7 b7: - //SEG179 [86] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG182 [88] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG180 [87] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG183 [89] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 lda x2 sta mulu16_sel.v1 lda x2+1 sta mulu16_sel.v1+1 - //SEG181 [88] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG184 [90] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG182 [89] call mulu16_sel - //SEG183 [114] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG185 [91] call mulu16_sel + //SEG186 [116] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG184 [114] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG187 [116] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG185 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG186 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG188 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG189 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG187 [90] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG190 [92] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_1 lda mulu16_sel.return_12+1 sta mulu16_sel.return_1+1 jmp b8 - //SEG188 sin16s::@8 + //SEG191 sin16s::@8 b8: - //SEG189 [91] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG192 [93] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 lda mulu16_sel.return_1 sta x3 lda mulu16_sel.return_1+1 sta x3+1 - //SEG190 [92] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG193 [94] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG191 [93] call mulu16_sel - //SEG192 [114] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG194 [95] call mulu16_sel + //SEG195 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG193 [114] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG196 [116] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG194 [114] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG197 [116] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG195 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG198 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG196 [94] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG199 [96] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_2 lda mulu16_sel.return_12+1 sta mulu16_sel.return_2+1 jmp b9 - //SEG197 sin16s::@9 + //SEG200 sin16s::@9 b9: - //SEG198 [95] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG201 [97] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 lda mulu16_sel.return_2 sta x3_6 lda mulu16_sel.return_2+1 sta x3_6+1 - //SEG199 [96] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG202 [98] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -3351,71 +3385,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG200 [97] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG203 [99] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG201 [98] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG204 [100] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG202 [99] call mulu16_sel - //SEG203 [114] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG205 [101] call mulu16_sel + //SEG206 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG204 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG207 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG205 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG206 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG208 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG209 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG207 [100] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG210 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_10 lda mulu16_sel.return_12+1 sta mulu16_sel.return_10+1 jmp b10 - //SEG208 sin16s::@10 + //SEG211 sin16s::@10 b10: - //SEG209 [101] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG212 [103] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 lda mulu16_sel.return_10 sta x4 lda mulu16_sel.return_10+1 sta x4+1 - //SEG210 [102] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG213 [104] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 lda x4 sta mulu16_sel.v1 lda x4+1 sta mulu16_sel.v1+1 - //SEG211 [103] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG214 [105] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG212 [104] call mulu16_sel - //SEG213 [114] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG215 [106] call mulu16_sel + //SEG216 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG214 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG217 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG215 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG216 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG218 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG219 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG217 [105] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG220 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_11 lda mulu16_sel.return_12+1 sta mulu16_sel.return_11+1 jmp b11 - //SEG218 sin16s::@11 + //SEG221 sin16s::@11 b11: - //SEG219 [106] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG222 [108] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 lda mulu16_sel.return_11 sta x5 lda mulu16_sel.return_11+1 sta x5+1 - //SEG220 [107] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 + //SEG223 [109] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 lda x5+1 lsr sta x5_128+1 @@ -3428,7 +3462,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG221 [108] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG224 [110] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -3436,14 +3470,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG222 [109] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG225 [111] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG223 sin16s::@6 + //SEG226 sin16s::@6 b6: - //SEG224 [110] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG227 [112] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda #0 sbc usinx_1 @@ -3451,28 +3485,28 @@ sin16s: { lda #0 sbc usinx_1+1 sta sinx+1 - //SEG225 [111] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG228 [113] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] b3_from_b12: b3_from_b6: - //SEG226 [111] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG229 [113] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG227 sin16s::@3 + //SEG230 sin16s::@3 b3: jmp breturn - //SEG228 sin16s::@return + //SEG231 sin16s::@return breturn: - //SEG229 [112] return + //SEG232 [114] return rts - //SEG230 sin16s::@12 + //SEG233 sin16s::@12 b12: - //SEG231 [113] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG234 [115] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 sta return_5+1 jmp b3_from_b12 } -//SEG232 mulu16_sel +//SEG235 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($1d) v1, word zeropage($1f) v2, byte zeropage($21) select) @@ -3488,21 +3522,21 @@ mulu16_sel: { .label return_11 = $5f .label select = $21 .label return_12 = $73 - //SEG233 [115] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG236 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG234 [116] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG237 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG235 [117] call mul16u - //SEG236 [123] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG238 [119] call mul16u + //SEG239 [125] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: jsr mul16u - //SEG237 [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG240 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -3512,9 +3546,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return+3 jmp b1 - //SEG238 mulu16_sel::@1 + //SEG241 mulu16_sel::@1 b1: - //SEG239 [119] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG242 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta _0 lda mul16u.return+1 @@ -3523,7 +3557,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return+3 sta _0+3 - //SEG240 [120] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG243 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -3542,18 +3576,18 @@ mulu16_sel: { dex bne !- !e: - //SEG241 [121] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG244 [123] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_12 lda _1+3 sta return_12+1 jmp breturn - //SEG242 mulu16_sel::@return + //SEG245 mulu16_sel::@return breturn: - //SEG243 [122] return + //SEG246 [124] return rts } -//SEG244 mul16u +//SEG247 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($22) a, word zeropage($2c) b) mul16u: { @@ -3563,9 +3597,9 @@ mul16u: { .label res = $24 .label b = $2c .label return = $67 - //SEG245 [124] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG248 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG246 [124] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 + //SEG249 [126] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 lda b sta mb lda b+1 @@ -3573,41 +3607,41 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG247 [124] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG250 [126] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG248 [124] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG251 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG249 mul16u::@1 + //SEG252 mul16u::@1 b1: - //SEG250 [125] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG253 [127] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG251 mul16u::@return + //SEG254 mul16u::@return breturn: - //SEG252 [126] return + //SEG255 [128] return rts - //SEG253 mul16u::@2 + //SEG256 mul16u::@2 b2: - //SEG254 [127] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG257 [129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG255 [128] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 + //SEG258 [130] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG256 mul16u::@4 + //SEG259 mul16u::@4 b4: - //SEG257 [129] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG260 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -3621,29 +3655,29 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG258 [130] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG261 [132] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG259 [130] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG262 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG260 mul16u::@3 + //SEG263 mul16u::@3 b3: - //SEG261 [131] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG264 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG262 [132] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG265 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG263 [124] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG266 [126] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG264 [124] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG265 [124] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG266 [124] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG267 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG268 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG269 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG267 div32u16u +//SEG270 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { @@ -3651,62 +3685,62 @@ div32u16u: { .label quotient_lo = $7c .label return = $7e .label return_2 = $3b - //SEG268 [134] call divr16u - //SEG269 [143] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG271 [136] call divr16u + //SEG272 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG270 [143] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG273 [145] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG271 [143] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG274 [145] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG272 [135] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG275 [137] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b1 - //SEG273 div32u16u::@1 + //SEG276 div32u16u::@1 b1: - //SEG274 [136] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG277 [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta quotient_hi lda divr16u.return_2+1 sta quotient_hi+1 - //SEG275 [137] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG278 [139] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG276 [138] call divr16u - //SEG277 [143] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG279 [140] call divr16u + //SEG280 [145] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from_b1: - //SEG278 [143] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG281 [145] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG279 [143] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG282 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG280 [139] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG283 [141] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b2 - //SEG281 div32u16u::@2 + //SEG284 div32u16u::@2 b2: - //SEG282 [140] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG285 [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta quotient_lo lda divr16u.return_3+1 sta quotient_lo+1 - //SEG283 [141] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG286 [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -3716,12 +3750,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG284 div32u16u::@return + //SEG287 div32u16u::@return breturn: - //SEG285 [142] return + //SEG288 [144] return rts } -//SEG286 divr16u +//SEG289 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -3737,63 +3771,63 @@ divr16u: { .label return = $32 .label return_2 = $76 .label return_3 = $7a - //SEG287 [144] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG290 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG288 [144] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG291 [146] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG289 [144] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG292 [146] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG290 [144] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG291 [144] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG293 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG294 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG292 [144] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG295 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG293 [144] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG294 [144] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG295 [144] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG296 [144] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG296 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG297 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG298 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG299 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG297 divr16u::@1 + //SEG300 divr16u::@1 b1: - //SEG298 [145] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG301 [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG299 [146] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG302 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG300 [147] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG303 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG301 [148] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG304 [150] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG302 divr16u::@4 + //SEG305 divr16u::@4 b4: - //SEG303 [149] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG306 [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG304 [150] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG307 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG305 [150] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG308 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG306 divr16u::@2 + //SEG309 divr16u::@2 b2: - //SEG307 [151] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG310 [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG308 [152] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG311 [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG309 [153] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG312 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -3803,14 +3837,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG310 divr16u::@5 + //SEG313 divr16u::@5 b5: - //SEG311 [154] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG314 [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG312 [155] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG315 [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG313 [156] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG316 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG314 [156] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG315 [156] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG317 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG318 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG316 divr16u::@3 + //SEG319 divr16u::@3 b3: - //SEG317 [157] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG320 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG318 [158] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG321 [160] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b3 jmp b6 - //SEG319 divr16u::@6 + //SEG322 divr16u::@6 b6: - //SEG320 [159] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG323 [161] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG321 divr16u::@return + //SEG324 divr16u::@return breturn: - //SEG322 [160] return + //SEG325 [162] return rts } -//SEG323 File Data +//SEG326 File Data print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 print_char_cursor#49 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#49 main::sw#0 ] ) always clobbers reg byte a reg byte y -Statement [10] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 print_char_cursor#49 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#49 main::sw#0 ] ) always clobbers reg byte a -Statement [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 print_char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a +Statement [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 print_char_cursor#52 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#52 main::sw#0 ] ) always clobbers reg byte a reg byte y +Statement [10] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 print_char_cursor#52 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#52 main::sw#0 ] ) always clobbers reg byte a +Statement [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a Statement [18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [19] if((signed word*) main::st1#1<(const signed word[$78]) main::sintab1#0+(const word) main::wavelength#0*(const byte) SIZEOF_SIGNED_WORD) goto main::@1 [ main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [28] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a -Statement [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [33] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_char_cursor#43 print_word::w#0 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#43 print_word::w#0 ] ) always clobbers reg byte a -Statement [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#43 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:15::print_word:34 [ main::st1#2 print_char_cursor#43 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:15::print_word:34 [ main::st1#2 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ( main:2::print_sword:15::print_word:34::print_byte:37 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] main:2::print_sword:15::print_word:34::print_byte:39 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:15::print_word:34::print_byte:37 [ main::st1#2 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:15::print_word:34::print_byte:39 [ main::st1#2 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [50] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 [ print_char_cursor#33 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 print_char_cursor#33 ] main:2::print_sword:15::print_word:34::print_byte:37::print_char:44 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:15::print_word:34::print_byte:39::print_char:44 [ main::st1#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:15::print_word:34::print_byte:37::print_char:47 [ main::st1#2 print_word::w#0 print_char_cursor#33 ] main:2::print_sword:15::print_word:34::print_byte:39::print_char:47 [ main::st1#2 print_char_cursor#33 ] ) 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 [55] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [57] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [61] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [62] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [64] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [66] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [67] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a -Statement [68] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [69] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [70] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [72] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a -Statement [74] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [75] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [77] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a +Statement [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:15::print_char:36 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:15::print_word:33::print_byte:43::print_char:50 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:15::print_word:33::print_byte:45::print_char:50 [ main::st1#2 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:15::print_word:33::print_byte:43::print_char:53 [ main::st1#2 print_word::w#0 print_char_cursor#35 ] main:2::print_sword:15::print_word:33::print_byte:45::print_char:53 [ main::st1#2 print_char_cursor#35 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:15::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:15::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:15::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:15::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [57] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [59] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [63] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a +Statement [64] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a +Statement [66] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [68] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a +Statement [69] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a +Statement [70] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y +Statement [71] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [72] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [74] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a +Statement [76] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [77] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [79] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Statement [78] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [80] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y +Statement [80] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [82] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Statement [81] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [82] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [83] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [85] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [86] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [87] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [88] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [91] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [92] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [94] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [95] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [96] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [97] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [98] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [100] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [101] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [102] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [103] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [106] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [107] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [108] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [110] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [113] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [115] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a +Statement [83] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [84] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [85] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [87] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [88] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [89] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [92] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [93] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [94] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [96] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [97] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [98] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [99] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [100] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [103] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [104] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [108] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [109] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a +Statement [110] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [112] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [115] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mulu16_sel::select#5 ] -Statement [116] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a -Statement [119] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [120] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [125] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [127] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [129] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [135] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:60 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [136] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [137] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [139] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [140] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [141] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [146] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a +Statement [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [123] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [127] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [137] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:62 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [139] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [141] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ divr16u::i#2 divr16u::i#1 ] -Statement [149] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [153] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [155] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [159] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 print_char_cursor#49 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#49 main::sw#0 ] ) always clobbers reg byte a reg byte y -Statement [10] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 print_char_cursor#49 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#49 main::sw#0 ] ) always clobbers reg byte a -Statement [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 print_char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a +Statement [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [161] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [9] (signed word) main::sw#0 ← *((signed word*) main::st1#2) [ main::st1#2 print_char_cursor#52 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#52 main::sw#0 ] ) always clobbers reg byte a reg byte y +Statement [10] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 print_char_cursor#52 main::sw#0 ] ( main:2 [ main::st1#2 print_char_cursor#52 main::sw#0 ] ) always clobbers reg byte a +Statement [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a Statement [18] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [19] if((signed word*) main::st1#1<(const signed word[$78]) main::sintab1#0+(const word) main::wavelength#0*(const byte) SIZEOF_SIGNED_WORD) goto main::@1 [ main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::st1#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::st1#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [28] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a -Statement [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [33] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_char_cursor#43 print_word::w#0 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#43 print_word::w#0 ] ) always clobbers reg byte a -Statement [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#43 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:15::print_word:34 [ main::st1#2 print_char_cursor#43 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:15::print_word:34 [ main::st1#2 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ( main:2::print_sword:15::print_word:34::print_byte:37 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] main:2::print_sword:15::print_word:34::print_byte:39 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ) always clobbers reg byte a -Statement [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:15::print_word:34::print_byte:37 [ main::st1#2 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:15::print_word:34::print_byte:39 [ main::st1#2 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [50] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 [ print_char_cursor#33 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 print_char_cursor#33 ] main:2::print_sword:15::print_word:34::print_byte:37::print_char:44 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:15::print_word:34::print_byte:39::print_char:44 [ main::st1#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:15::print_word:34::print_byte:37::print_char:47 [ main::st1#2 print_word::w#0 print_char_cursor#33 ] main:2::print_sword:15::print_word:34::print_byte:39::print_char:47 [ main::st1#2 print_char_cursor#33 ] ) always clobbers reg byte y -Statement [55] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [57] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [61] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [62] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [64] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [66] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [67] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a -Statement [68] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [69] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [70] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [72] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a -Statement [74] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [75] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [77] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [78] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [80] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y -Statement [81] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [82] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [83] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [85] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [86] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [87] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [88] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [91] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [92] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [94] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [95] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [96] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [97] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [98] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [100] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [101] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [102] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [103] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [106] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [107] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [108] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [110] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [113] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:65 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [115] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a -Statement [116] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a -Statement [119] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [120] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [125] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [127] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [129] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:65::mulu16_sel:84::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:89::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:93::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:99::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:65::mulu16_sel:104::mul16u:117 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [135] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:60 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [136] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [137] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [139] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [140] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [141] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:60 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [146] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [149] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [153] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [155] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [159] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:60::divr16u:134 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:60::divr16u:138 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a +Statement [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:15 [ main::st1#2 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:15::print_char:30 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:15::print_char:36 [ main::st1#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:15::print_word:33::print_byte:43::print_char:50 [ main::st1#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:15::print_word:33::print_byte:45::print_char:50 [ main::st1#2 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:15::print_word:33::print_byte:43::print_char:53 [ main::st1#2 print_word::w#0 print_char_cursor#35 ] main:2::print_sword:15::print_word:33::print_byte:45::print_char:53 [ main::st1#2 print_char_cursor#35 ] ) always clobbers reg byte y +Statement [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:15::print_word:33 [ main::st1#2 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:15::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:15::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:15::print_word:33::print_byte:43 [ main::st1#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:15::print_word:33::print_byte:45 [ main::st1#2 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [57] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [59] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [63] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a +Statement [64] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a +Statement [66] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [68] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a +Statement [69] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a +Statement [70] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y +Statement [71] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [72] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [74] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a +Statement [76] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [77] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [79] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [80] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [82] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y +Statement [83] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [84] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [85] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [87] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [88] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [89] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [92] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [93] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [94] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [96] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [97] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [98] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [99] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [100] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [103] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [104] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [108] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [109] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a +Statement [110] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [112] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [115] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:67 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a +Statement [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a +Statement [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [123] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [127] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:67::mulu16_sel:86::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:91::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:95::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:101::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:67::mulu16_sel:106::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [137] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:62 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [139] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [141] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:62 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [161] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:62::divr16u:136 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:62::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:4 , -Potential registers zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] : 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 x , -Potential registers zp ZP_BYTE:9 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:10 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] : zp ZP_WORD:10 , +Potential registers zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] : zp ZP_WORD:6 , +Potential registers zp ZP_BYTE:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:9 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] : zp ZP_WORD:9 , +Potential registers zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:11 , reg byte x , Potential registers zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:12 , Potential registers zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] : zp ZP_DWORD:14 , Potential registers zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] : zp ZP_WORD:18 , @@ -4073,39 +4107,39 @@ REGISTER UPLIFT SCOPES Uplift Scope [mul16u] 353.83: zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245.57: zp ZP_DWORD:40 [ mul16u::mb#2 mul16u::mb#1 ] 202: zp ZP_BYTE:117 [ mul16u::$1 ] 170: zp ZP_WORD:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] 4: zp ZP_DWORD:103 [ mul16u::return#2 ] 2: zp ZP_WORD:44 [ mul16u::b#0 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] Uplift Scope [divr16u] 106.92: zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:130 [ divr16u::$1 ] 22: zp ZP_BYTE:131 [ divr16u::$2 ] 18.19: zp ZP_BYTE:52 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:48 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:118 [ divr16u::return#2 ] 4: zp ZP_WORD:122 [ divr16u::return#3 ] -Uplift Scope [] 190.74: zp ZP_WORD:10 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] 0.8: zp ZP_WORD:132 [ rem16u#1 ] +Uplift Scope [] 186.03: zp ZP_WORD:9 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] 0.8: zp ZP_WORD:132 [ rem16u#1 ] Uplift Scope [sin16s] 27.5: zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:67 [ sin16s::return#0 ] 13: zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:71 [ sin16s::$4 ] 4: zp ZP_WORD:79 [ sin16s::x2#0 ] 4: zp ZP_WORD:87 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:93 [ sin16s::x4#0 ] 4: zp ZP_WORD:97 [ sin16s::x5#0 ] 4: zp ZP_WORD:99 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:83 [ sin16s::x3#0 ] 1: zp ZP_WORD:101 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:75 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:89 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:22 [ sin16s::isUpper#2 ] Uplift Scope [mulu16_sel] 24: zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 21: zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:77 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:81 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:85 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:91 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:95 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:107 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:111 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:115 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:33 [ mulu16_sel::select#5 ] Uplift Scope [sin16s_gen] 22: zp ZP_WORD:69 [ sin16s_gen::$1 ] 19.25: zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 12.05: zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 11: zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] 1.18: zp ZP_DWORD:63 [ sin16s_gen::step#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [main] 19.8: zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] 6.6: zp ZP_WORD:53 [ main::sw#0 ] -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:57 [ print_byte::$0 ] 4: zp ZP_BYTE:58 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:9 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplift Scope [print_sword] 12.25: zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:57 [ print_byte::$0 ] 4: zp ZP_BYTE:58 [ print_byte::$2 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_sword] 10.83: zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Uplift Scope [div32u16u] 4: zp ZP_DWORD:59 [ div32u16u::return#2 ] 4: zp ZP_WORD:124 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:126 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:120 [ div32u16u::quotient_hi#0 ] Uplift Scope [print_word] 2: zp ZP_WORD:55 [ print_word::w#0 ] -Uplifting [mul16u] best 26871 combination zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:40 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:103 [ mul16u::return#2 ] zp ZP_WORD:44 [ mul16u::b#0 ] -Uplifting [print_str] best 26871 combination zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [divr16u] best 26661 combination zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:48 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:118 [ divr16u::return#2 ] zp ZP_WORD:122 [ divr16u::return#3 ] -Uplifting [] best 26661 combination zp ZP_WORD:10 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] zp ZP_WORD:132 [ rem16u#1 ] -Uplifting [sin16s] best 26661 combination zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:67 [ sin16s::return#0 ] zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:71 [ sin16s::$4 ] zp ZP_WORD:79 [ sin16s::x2#0 ] zp ZP_WORD:87 [ sin16s::x3_6#0 ] zp ZP_WORD:93 [ sin16s::x4#0 ] zp ZP_WORD:97 [ sin16s::x5#0 ] zp ZP_WORD:99 [ sin16s::x5_128#0 ] zp ZP_WORD:83 [ sin16s::x3#0 ] zp ZP_WORD:101 [ sin16s::usinx#1 ] zp ZP_WORD:75 [ sin16s::x1#0 ] zp ZP_WORD:89 [ sin16s::usinx#0 ] zp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 26645 combination zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:77 [ mulu16_sel::return#0 ] zp ZP_WORD:81 [ mulu16_sel::return#1 ] zp ZP_WORD:85 [ mulu16_sel::return#2 ] zp ZP_WORD:91 [ mulu16_sel::return#10 ] zp ZP_WORD:95 [ mulu16_sel::return#11 ] zp ZP_DWORD:107 [ mulu16_sel::$0 ] zp ZP_DWORD:111 [ mulu16_sel::$1 ] zp ZP_WORD:115 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [sin16s_gen] best 26645 combination zp ZP_WORD:69 [ sin16s_gen::$1 ] zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:63 [ sin16s_gen::step#0 ] -Uplifting [print_cls] best 26645 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [main] best 26645 combination zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:53 [ main::sw#0 ] -Uplifting [print_byte] best 26631 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 26619 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplifting [print_sword] best 26619 combination zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [div32u16u] best 26619 combination zp ZP_DWORD:59 [ div32u16u::return#2 ] zp ZP_WORD:124 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:126 [ div32u16u::return#0 ] zp ZP_WORD:120 [ div32u16u::quotient_hi#0 ] -Uplifting [print_word] best 26619 combination zp ZP_WORD:55 [ print_word::w#0 ] +Uplifting [mul16u] best 26888 combination zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:40 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:103 [ mul16u::return#2 ] zp ZP_WORD:44 [ mul16u::b#0 ] +Uplifting [print_str] best 26888 combination zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [divr16u] best 26678 combination zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:48 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:118 [ divr16u::return#2 ] zp ZP_WORD:122 [ divr16u::return#3 ] +Uplifting [] best 26678 combination zp ZP_WORD:9 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] zp ZP_WORD:132 [ rem16u#1 ] +Uplifting [sin16s] best 26678 combination zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:67 [ sin16s::return#0 ] zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:71 [ sin16s::$4 ] zp ZP_WORD:79 [ sin16s::x2#0 ] zp ZP_WORD:87 [ sin16s::x3_6#0 ] zp ZP_WORD:93 [ sin16s::x4#0 ] zp ZP_WORD:97 [ sin16s::x5#0 ] zp ZP_WORD:99 [ sin16s::x5_128#0 ] zp ZP_WORD:83 [ sin16s::x3#0 ] zp ZP_WORD:101 [ sin16s::usinx#1 ] zp ZP_WORD:75 [ sin16s::x1#0 ] zp ZP_WORD:89 [ sin16s::usinx#0 ] zp ZP_BYTE:22 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 26662 combination zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:77 [ mulu16_sel::return#0 ] zp ZP_WORD:81 [ mulu16_sel::return#1 ] zp ZP_WORD:85 [ mulu16_sel::return#2 ] zp ZP_WORD:91 [ mulu16_sel::return#10 ] zp ZP_WORD:95 [ mulu16_sel::return#11 ] zp ZP_DWORD:107 [ mulu16_sel::$0 ] zp ZP_DWORD:111 [ mulu16_sel::$1 ] zp ZP_WORD:115 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s_gen] best 26662 combination zp ZP_WORD:69 [ sin16s_gen::$1 ] zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:63 [ sin16s_gen::step#0 ] +Uplifting [print_cls] best 26662 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [main] best 26662 combination zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:53 [ main::sw#0 ] +Uplifting [print_byte] best 26648 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [print_char] best 26633 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_sword] best 26633 combination zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [div32u16u] best 26633 combination zp ZP_DWORD:59 [ div32u16u::return#2 ] zp ZP_WORD:124 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:126 [ div32u16u::return#0 ] zp ZP_WORD:120 [ div32u16u::quotient_hi#0 ] +Uplifting [print_word] best 26633 combination zp ZP_WORD:55 [ print_word::w#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 26619 combination zp ZP_BYTE:22 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 26633 combination zp ZP_BYTE:22 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:101 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:83 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:132 [ rem16u#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] ] with [ zp ZP_WORD:53 [ main::sw#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 ] ] with [ zp ZP_WORD:55 [ print_word::w#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] with [ zp ZP_WORD:53 [ main::sw#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 ] ] with [ zp ZP_WORD:55 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:71 [ sin16s::$4 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp ZP_WORD:67 [ sin16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:79 [ sin16s::x2#0 ] ] - score: 1 @@ -4129,7 +4163,7 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:50 [ divr16u:: Coalescing zero page register with common assignment [ zp ZP_WORD:77 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:85 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:77 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:95 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:77 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:99 [ sin16s::x5_128#0 ] ] - score: 1 -Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ] Allocated (was zp ZP_DWORD:14) zp ZP_DWORD:12 [ sin16s_gen::x#2 sin16s_gen::x#1 ] Allocated (was zp ZP_WORD:18) zp ZP_WORD:16 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] @@ -4190,7 +4224,7 @@ main: { .label sw = 6 .label st1 = 2 //SEG11 [5] call sin16s_gen - //SEG12 [59] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG12 [61] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: jsr sin16s_gen //SEG13 [6] phi from main to main::@4 [phi:main->main::@4] @@ -4199,12 +4233,12 @@ main: { //SEG14 main::@4 b4: //SEG15 [7] call print_cls - //SEG16 [53] phi from main::@4 to print_cls [phi:main::@4->print_cls] + //SEG16 [55] phi from main::@4 to print_cls [phi:main::@4->print_cls] print_cls_from_b4: jsr print_cls //SEG17 [8] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG18 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) print_char_cursor#52 = (const byte*) print_line_cursor#0 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor @@ -4217,7 +4251,7 @@ main: { jmp b1 //SEG20 [8] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG21 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@6->main::@1#0] -- register_copy + //SEG21 [8] phi (byte*) print_char_cursor#52 = (byte*) print_char_cursor#2 [phi:main::@6->main::@1#0] -- register_copy //SEG22 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@6->main::@1#1] -- register_copy jmp b1 //SEG23 main::@1 @@ -4240,7 +4274,7 @@ main: { //SEG28 [12] call print_str //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG30 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG30 [21] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#52 [phi:main::@3->print_str#0] -- register_copy //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #main::@2] b2_from_b1: b2_from_b3: - //SEG33 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [13] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 //SEG34 main::@2 b2: @@ -4265,7 +4299,7 @@ main: { //SEG39 [17] call print_str //SEG40 [21] phi from main::@5 to print_str [phi:main::@5->print_str] print_str_from_b5: - //SEG41 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@5->print_str#0] -- register_copy + //SEG41 [21] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#13 [phi:main::@5->print_str#0] -- register_copy //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@5->print_str#1] -- pbuz1=pbuc1 lda #print_str::@1] b1_from_print_str: b1_from_b2: - //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#54 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG51 [22] 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 //SEG52 print_str::@1 @@ -4348,25 +4382,52 @@ print_str: { // print_sword(signed word zeropage(6) w) print_sword: { .label w = 6 - //SEG61 [28] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG61 [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG62 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG63 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG62 [29] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG63 print_sword::@3 + b3: //SEG64 [30] call print_char - //SEG65 [49] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG66 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG67 [49] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG65 [38] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG66 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG67 [38] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG68 [31] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG69 [31] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG70 print_sword::@2 + b2: + //SEG71 [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG72 [33] call print_word + jsr print_word + jmp breturn + //SEG73 print_sword::@return + breturn: + //SEG74 [34] return + rts + //SEG75 [35] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG76 print_sword::@1 + b1: + //SEG77 [36] call print_char + //SEG78 [38] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG79 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG80 [38] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG68 print_sword::@3 - b3: - //SEG69 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG81 print_sword::@4 + b4: + //SEG82 [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -4374,140 +4435,123 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG70 [32] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG71 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG72 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG73 print_sword::@1 - b1: - //SEG74 [33] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG75 [34] call print_word - jsr print_word - jmp breturn - //SEG76 print_sword::@return - breturn: - //SEG77 [35] return - rts + jmp b2_from_b4 } -//SEG78 print_word -// Print a word as HEX -// print_word(word zeropage(6) w) -print_word: { - .label w = 6 - //SEG79 [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 - lda w+1 - tax - //SEG80 [37] call print_byte - //SEG81 [41] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG82 [41] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG83 [41] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - //SEG84 print_word::@1 - b1: - //SEG85 [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 - lda w - tax - //SEG86 [39] call print_byte - //SEG87 [41] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG88 [41] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG89 [41] 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 - //SEG90 print_word::@return - breturn: - //SEG91 [40] return - rts -} -//SEG92 print_byte -// Print a byte as HEX -// print_byte(byte register(X) b) -print_byte: { - //SEG93 [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 - txa - lsr - lsr - lsr - lsr - //SEG94 [43] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - //SEG95 [44] call print_char - //SEG96 [49] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - //SEG97 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG98 [49] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - //SEG99 print_byte::@1 - b1: - //SEG100 [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 - lda #$f - axs #0 - //SEG101 [46] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx - lda print_hextab,x - //SEG102 [47] call print_char - //SEG103 [49] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - //SEG104 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG105 [49] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - //SEG106 print_byte::@return - breturn: - //SEG107 [48] return - rts -} -//SEG108 print_char +//SEG83 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG109 [50] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG84 [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG110 [51] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 + //SEG85 [40] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG111 print_char::@return + //SEG86 print_char::@return breturn: - //SEG112 [52] return + //SEG87 [41] return rts } -//SEG113 print_cls +//SEG88 print_word +// Print a word as HEX +// print_word(word zeropage(6) w) +print_word: { + .label w = 6 + //SEG89 [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + lda w+1 + tax + //SEG90 [43] call print_byte + //SEG91 [47] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG92 [47] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy + jsr print_byte + jmp b1 + //SEG93 print_word::@1 + b1: + //SEG94 [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 + lda w + tax + //SEG95 [45] call print_byte + //SEG96 [47] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG97 [47] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy + jsr print_byte + jmp breturn + //SEG98 print_word::@return + breturn: + //SEG99 [46] return + rts +} +//SEG100 print_byte +// Print a byte as HEX +// print_byte(byte register(X) b) +print_byte: { + //SEG101 [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa + lsr + lsr + lsr + lsr + //SEG102 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + //SEG103 [50] call print_char + //SEG104 [38] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG105 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG106 [38] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG107 print_byte::@1 + b1: + //SEG108 [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + lda #$f + axs #0 + //SEG109 [52] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x + //SEG110 [53] call print_char + //SEG111 [38] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG112 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG113 [38] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG114 print_byte::@return + breturn: + //SEG115 [54] return + rts +} +//SEG116 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $a - //SEG114 [54] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG117 [56] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG115 [54] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG118 [56] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG116 [54] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG119 [56] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG117 [54] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG120 [56] 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 + //SEG121 print_cls::@1 b1: - //SEG119 [55] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG122 [57] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG120 [56] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG123 [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG121 [57] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG124 [59] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1_from_b1 @@ -4515,12 +4559,12 @@ print_cls: { cmp #div32u16u] + //SEG128 [62] call div32u16u + //SEG129 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG127 [61] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG130 [63] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b2 - //SEG128 sin16s_gen::@2 + //SEG131 sin16s_gen::@2 b2: - //SEG129 [62] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG130 [63] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] + //SEG132 [64] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG133 [65] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] b1_from_b2: - //SEG131 [63] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG134 [65] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG132 [63] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG135 [65] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG133 [63] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG136 [65] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -4561,15 +4605,15 @@ sin16s_gen: { sta x+3 jmp b1 // u[4.28] - //SEG134 [63] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG137 [65] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG135 [63] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy - //SEG136 [63] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy - //SEG137 [63] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy + //SEG138 [65] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy + //SEG139 [65] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy + //SEG140 [65] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG138 sin16s_gen::@1 + //SEG141 sin16s_gen::@1 b1: - //SEG139 [64] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG142 [66] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -4578,21 +4622,21 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG140 [65] call sin16s + //SEG143 [67] call sin16s jsr sin16s - //SEG141 [66] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG144 [68] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b3 - //SEG142 sin16s_gen::@3 + //SEG145 sin16s_gen::@3 b3: - //SEG143 [67] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG144 [68] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG146 [69] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG147 [70] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG145 [69] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG148 [71] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -4600,7 +4644,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG146 [70] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG149 [72] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4614,12 +4658,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG147 [71] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG150 [73] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG148 [72] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG151 [74] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b3 @@ -4629,12 +4673,12 @@ sin16s_gen: { bcc b1_from_b3 !: jmp breturn - //SEG149 sin16s_gen::@return + //SEG152 sin16s_gen::@return breturn: - //SEG150 [73] return + //SEG153 [75] return rts } -//SEG151 sin16s +//SEG154 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -4653,7 +4697,7 @@ sin16s: { .label x5_128 = $35 .label sinx = $19 .label isUpper = $14 - //SEG152 [74] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG155 [76] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -4671,9 +4715,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG153 sin16s::@4 + //SEG156 sin16s::@4 b4: - //SEG154 [75] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG157 [77] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG155 [76] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG158 [78] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG156 [76] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG159 [78] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG157 [76] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG160 [78] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG158 [76] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG161 [78] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG159 [76] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG162 [78] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG160 [76] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG163 [78] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG161 sin16s::@1 + //SEG164 sin16s::@1 b1: - //SEG162 [77] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG165 [79] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -4721,9 +4765,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG163 sin16s::@5 + //SEG166 sin16s::@5 b5: - //SEG164 [78] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG167 [80] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG165 [79] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG168 [81] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG166 [79] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG169 [81] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG167 sin16s::@2 + //SEG170 sin16s::@2 b2: - //SEG168 [80] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 + //SEG171 [82] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _4 @@ -4753,80 +4797,80 @@ sin16s: { rol _4+3 dey bne !- - //SEG169 [81] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG172 [83] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG170 [82] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG173 [84] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG171 [83] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG174 [85] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG172 [84] call mulu16_sel - //SEG173 [114] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG175 [86] call mulu16_sel + //SEG176 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG174 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG177 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG175 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG176 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG178 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG179 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG177 [85] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG180 [87] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b7 - //SEG178 sin16s::@7 + //SEG181 sin16s::@7 b7: - //SEG179 [86] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG182 [88] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG180 [87] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG181 [88] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG183 [89] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG184 [90] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG182 [89] call mulu16_sel - //SEG183 [114] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG185 [91] call mulu16_sel + //SEG186 [116] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG184 [114] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG187 [116] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG185 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG186 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG188 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG189 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG187 [90] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG190 [92] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 jmp b8 - //SEG188 sin16s::@8 + //SEG191 sin16s::@8 b8: - //SEG189 [91] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG190 [92] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG191 [93] call mulu16_sel - //SEG192 [114] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG192 [93] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG193 [94] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG194 [95] call mulu16_sel + //SEG195 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG193 [114] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG196 [116] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG194 [114] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG197 [116] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG195 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG198 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG196 [94] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG199 [96] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b9 - //SEG197 sin16s::@9 + //SEG200 sin16s::@9 b9: - //SEG198 [95] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG199 [96] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG201 [97] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG202 [98] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4834,49 +4878,49 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG200 [97] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG201 [98] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG203 [99] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG204 [100] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG202 [99] call mulu16_sel - //SEG203 [114] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG205 [101] call mulu16_sel + //SEG206 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG204 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG207 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG205 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG206 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG208 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG209 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG207 [100] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG210 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 jmp b10 - //SEG208 sin16s::@10 + //SEG211 sin16s::@10 b10: - //SEG209 [101] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG210 [102] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG211 [103] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG212 [103] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG213 [104] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG214 [105] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG212 [104] call mulu16_sel - //SEG213 [114] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG215 [106] call mulu16_sel + //SEG216 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG214 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG217 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG215 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG216 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG218 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG219 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG217 [105] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG220 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b11 - //SEG218 sin16s::@11 + //SEG221 sin16s::@11 b11: - //SEG219 [106] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG220 [107] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + //SEG222 [108] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG223 [109] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr x5_128+1 ror x5_128 lsr x5_128+1 @@ -4885,7 +4929,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG221 [108] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG224 [110] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -4893,14 +4937,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG222 [109] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG225 [111] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG223 sin16s::@6 + //SEG226 sin16s::@6 b6: - //SEG224 [110] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG227 [112] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc sinx @@ -4908,24 +4952,24 @@ sin16s: { lda #0 sbc sinx+1 sta sinx+1 - //SEG225 [111] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG228 [113] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] b3_from_b12: b3_from_b6: - //SEG226 [111] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG229 [113] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG227 sin16s::@3 + //SEG230 sin16s::@3 b3: jmp breturn - //SEG228 sin16s::@return + //SEG231 sin16s::@return breturn: - //SEG229 [112] return + //SEG232 [114] return rts - //SEG230 sin16s::@12 + //SEG233 sin16s::@12 b12: - //SEG231 [113] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG234 [115] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b12 } -//SEG232 mulu16_sel +//SEG235 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($1b) v1, word zeropage($1d) v2, byte register(X) select) @@ -4937,22 +4981,22 @@ mulu16_sel: { .label return = $35 .label return_1 = $1b .label return_10 = $1b - //SEG233 [115] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG236 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG234 [116] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 - //SEG235 [117] call mul16u - //SEG236 [123] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG237 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + //SEG238 [119] call mul16u + //SEG239 [125] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: jsr mul16u - //SEG237 [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG240 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b1 - //SEG238 mulu16_sel::@1 + //SEG241 mulu16_sel::@1 b1: - //SEG239 [119] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG240 [120] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG242 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG243 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -4963,18 +5007,18 @@ mulu16_sel: { dex bne !- !e: - //SEG241 [121] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG244 [123] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 jmp breturn - //SEG242 mulu16_sel::@return + //SEG245 mulu16_sel::@return breturn: - //SEG243 [122] return + //SEG246 [124] return rts } -//SEG244 mul16u +//SEG247 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($1f) a, word zeropage($1d) b) mul16u: { @@ -4983,9 +5027,9 @@ mul16u: { .label res = $21 .label b = $1d .label return = $21 - //SEG245 [124] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG248 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG246 [124] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 + //SEG249 [126] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 lda b sta mb lda b+1 @@ -4993,39 +5037,39 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG247 [124] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG250 [126] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG248 [124] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG251 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG249 mul16u::@1 + //SEG252 mul16u::@1 b1: - //SEG250 [125] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG253 [127] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG251 mul16u::@return + //SEG254 mul16u::@return breturn: - //SEG252 [126] return + //SEG255 [128] return rts - //SEG253 mul16u::@2 + //SEG256 mul16u::@2 b2: - //SEG254 [127] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG257 [129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG255 [128] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG258 [130] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG256 mul16u::@4 + //SEG259 mul16u::@4 b4: - //SEG257 [129] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG260 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -5039,75 +5083,75 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG258 [130] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG261 [132] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG259 [130] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG262 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG260 mul16u::@3 + //SEG263 mul16u::@3 b3: - //SEG261 [131] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG264 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG262 [132] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG265 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG263 [124] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG266 [126] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG264 [124] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG265 [124] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG266 [124] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG267 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG268 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG269 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG267 div32u16u +//SEG270 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $37 .label quotient_lo = $2d .label return = $2f - //SEG268 [134] call divr16u - //SEG269 [143] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG271 [136] call divr16u + //SEG272 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG270 [143] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG273 [145] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG271 [143] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG274 [145] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG272 [135] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG275 [137] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b1 - //SEG273 div32u16u::@1 + //SEG276 div32u16u::@1 b1: - //SEG274 [136] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG277 [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG275 [137] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG276 [138] call divr16u - //SEG277 [143] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG278 [139] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG279 [140] call divr16u + //SEG280 [145] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from_b1: - //SEG278 [143] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG281 [145] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG279 [143] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG282 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG280 [139] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG283 [141] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b2 - //SEG281 div32u16u::@2 + //SEG284 div32u16u::@2 b2: - //SEG282 [140] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG283 [141] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG285 [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG286 [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -5117,12 +5161,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG284 div32u16u::@return + //SEG287 div32u16u::@return breturn: - //SEG285 [142] return + //SEG288 [144] return rts } -//SEG286 divr16u +//SEG289 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5133,58 +5177,58 @@ divr16u: { .label dividend = $2b .label quotient = $2d .label return = $2d - //SEG287 [144] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG290 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG288 [144] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG291 [146] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG289 [144] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG292 [146] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG290 [144] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG291 [144] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG293 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG294 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG292 [144] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG295 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG293 [144] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG294 [144] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG295 [144] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG296 [144] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG296 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG297 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG298 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG299 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG297 divr16u::@1 + //SEG300 divr16u::@1 b1: - //SEG298 [145] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG301 [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG299 [146] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG302 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG300 [147] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG303 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG301 [148] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG304 [150] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG302 divr16u::@4 + //SEG305 divr16u::@4 b4: - //SEG303 [149] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG306 [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG304 [150] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG307 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG305 [150] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG308 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG306 divr16u::@2 + //SEG309 divr16u::@2 b2: - //SEG307 [151] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG310 [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG308 [152] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG311 [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG309 [153] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG312 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -5194,14 +5238,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG310 divr16u::@5 + //SEG313 divr16u::@5 b5: - //SEG311 [154] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG314 [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG312 [155] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG315 [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG313 [156] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG316 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG314 [156] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG315 [156] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG317 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG318 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG316 divr16u::@3 + //SEG319 divr16u::@3 b3: - //SEG317 [157] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG320 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG318 [158] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG321 [160] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG319 divr16u::@6 + //SEG322 divr16u::@6 b6: - //SEG320 [159] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG323 [161] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG321 divr16u::@return + //SEG324 divr16u::@return breturn: - //SEG322 [160] return + //SEG325 [162] return rts } -//SEG323 File Data +//SEG326 File Data print_hextab: .text "0123456789abcdef" ASSEMBLER OPTIMIZATIONS @@ -5247,15 +5291,16 @@ Removing instruction jmp b6 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 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 b2 @@ -5306,6 +5351,7 @@ Replacing label b1_from_b6 with b1 Replacing label b1_from_b6 with b1 Replacing label b1_from_b2 with b1 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b3 with b1 @@ -5335,10 +5381,12 @@ Removing instruction b5_from_b2: Removing instruction print_str_from_b5: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: +Removing instruction print_char_from_b1: Removing instruction b1_from_b1: Removing instruction b1_from_b2: Removing instruction b1_from_b3: @@ -5366,9 +5414,10 @@ Removing instruction b5: Removing instruction b6: Removing instruction breturn: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: +Removing instruction breturn: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -5377,7 +5426,6 @@ Removing instruction print_char_from_print_byte: Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: -Removing instruction breturn: Removing instruction b1_from_print_cls: Removing instruction breturn: Removing instruction div32u16u_from_sin16s_gen: @@ -5573,19 +5621,17 @@ FINAL SYMBOL TABLE (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#4 reg byte a 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:8 101.0 -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:8 1.1176470588235294 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:8 0.7083333333333334 (byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:8 40.875 -(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:8 5.0 -(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:8 2.0 -(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:8 2.0 -(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:8 6.5 -(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:8 8.25 -(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:8 24.0 +(byte*) print_char_cursor#35 print_char_cursor zp ZP_WORD:8 6.0 +(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:8 5.200000000000001 +(byte*) print_char_cursor#52 print_char_cursor zp ZP_WORD:8 8.25 +(byte*) print_char_cursor#54 print_char_cursor zp ZP_WORD:8 24.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -5609,11 +5655,12 @@ FINAL SYMBOL TABLE (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:6 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:6 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:6 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:6 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -5688,10 +5735,10 @@ FINAL SYMBOL TABLE zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 print_word::w#0 ] +zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] +reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:8 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:8 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ] zp ZP_DWORD:12 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:16 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] @@ -5721,7 +5768,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 22657 +Score: 22668 //SEG0 File Comments // Generates a 16-bit signed sinus @@ -5753,15 +5800,15 @@ main: { .label sw = 6 .label st1 = 2 //SEG11 [5] call sin16s_gen - //SEG12 [59] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG12 [61] phi from main to sin16s_gen [phi:main->sin16s_gen] jsr sin16s_gen //SEG13 [6] phi from main to main::@4 [phi:main->main::@4] //SEG14 main::@4 //SEG15 [7] call print_cls - //SEG16 [53] phi from main::@4 to print_cls [phi:main::@4->print_cls] + //SEG16 [55] phi from main::@4 to print_cls [phi:main::@4->print_cls] jsr print_cls //SEG17 [8] phi from main::@4 to main::@1 [phi:main::@4->main::@1] - //SEG18 [8] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 + //SEG18 [8] phi (byte*) print_char_cursor#52 = (const byte*) print_line_cursor#0 [phi:main::@4->main::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor @@ -5772,7 +5819,7 @@ main: { lda #>sintab1 sta st1+1 //SEG20 [8] phi from main::@6 to main::@1 [phi:main::@6->main::@1] - //SEG21 [8] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@6->main::@1#0] -- register_copy + //SEG21 [8] phi (byte*) print_char_cursor#52 = (byte*) print_char_cursor#2 [phi:main::@6->main::@1#0] -- register_copy //SEG22 [8] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@6->main::@1#1] -- register_copy //SEG23 main::@1 b1: @@ -5789,7 +5836,7 @@ main: { //SEG27 main::@3 //SEG28 [12] call print_str //SEG29 [21] phi from main::@3 to print_str [phi:main::@3->print_str] - //SEG30 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG30 [21] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#52 [phi:main::@3->print_str#0] -- register_copy //SEG31 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #main::@2] - //SEG33 [13] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 [13] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52 [phi:main::@1/main::@3->main::@2#0] -- register_copy //SEG34 main::@2 b2: //SEG35 [14] (signed word) print_sword::w#1 ← (signed word) main::sw#0 @@ -5807,7 +5854,7 @@ main: { //SEG38 main::@5 //SEG39 [17] call print_str //SEG40 [21] phi from main::@5 to print_str [phi:main::@5->print_str] - //SEG41 [21] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@5->print_str#0] -- register_copy + //SEG41 [21] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#13 [phi:main::@5->print_str#0] -- register_copy //SEG42 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@5->print_str#1] -- pbuz1=pbuc1 lda #print_str::@1] - //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG50 [22] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#54 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG51 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy //SEG52 print_str::@1 b1: @@ -5880,19 +5927,38 @@ print_str: { // print_sword(signed word zeropage(6) w) print_sword: { .label w = 6 - //SEG61 [28] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG61 [28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG62 [29] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG63 print_sword::@2 + bmi b1 + //SEG62 [29] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG63 print_sword::@3 //SEG64 [30] call print_char - //SEG65 [49] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG66 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG67 [49] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG65 [38] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG66 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG67 [38] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG68 [31] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG69 [31] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG70 print_sword::@2 + b2: + //SEG71 [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG72 [33] call print_word + jsr print_word + //SEG73 print_sword::@return + //SEG74 [34] return + rts + //SEG75 [35] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG76 print_sword::@1 + b1: + //SEG77 [36] call print_char + //SEG78 [38] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG79 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG80 [38] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG68 print_sword::@3 - //SEG69 [31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG81 print_sword::@4 + //SEG82 [37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -5900,128 +5966,116 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG70 [32] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG71 [32] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG72 [32] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG73 print_sword::@1 - b1: - //SEG74 [33] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG75 [34] call print_word - jsr print_word - //SEG76 print_sword::@return - //SEG77 [35] return + jmp b2 +} +//SEG83 print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + //SEG84 [39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + //SEG85 [40] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: + //SEG86 print_char::@return + //SEG87 [41] return rts } -//SEG78 print_word +//SEG88 print_word // Print a word as HEX // print_word(word zeropage(6) w) print_word: { .label w = 6 - //SEG79 [36] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 + //SEG89 [42] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG80 [37] call print_byte - //SEG81 [41] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG82 [41] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG83 [41] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG90 [43] call print_byte + //SEG91 [47] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG92 [47] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte - //SEG84 print_word::@1 - //SEG85 [38] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 + //SEG93 print_word::@1 + //SEG94 [44] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1 lda w tax - //SEG86 [39] call print_byte - //SEG87 [41] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG88 [41] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG89 [41] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG95 [45] call print_byte + //SEG96 [47] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG97 [47] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte - //SEG90 print_word::@return - //SEG91 [40] return + //SEG98 print_word::@return + //SEG99 [46] return rts } -//SEG92 print_byte +//SEG100 print_byte // Print a byte as HEX // print_byte(byte register(X) b) print_byte: { - //SEG93 [42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + //SEG101 [48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG94 [43] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG102 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG95 [44] call print_char - //SEG96 [49] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG97 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG98 [49] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG103 [50] call print_char + //SEG104 [38] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG105 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG106 [38] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG99 print_byte::@1 - //SEG100 [45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + //SEG107 print_byte::@1 + //SEG108 [51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - //SEG101 [46] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG109 [52] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x - //SEG102 [47] call print_char - //SEG103 [49] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG104 [49] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG105 [49] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG110 [53] call print_char + //SEG111 [38] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG112 [38] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG113 [38] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG106 print_byte::@return - //SEG107 [48] return + //SEG114 print_byte::@return + //SEG115 [54] return rts } -//SEG108 print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - //SEG109 [50] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - //SEG110 [51] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - //SEG111 print_char::@return - //SEG112 [52] return - rts -} -//SEG113 print_cls +//SEG116 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $a - //SEG114 [54] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG115 [54] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG117 [56] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG118 [56] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 - //SEG116 [54] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG117 [54] 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 + //SEG119 [56] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG120 [56] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG121 print_cls::@1 b1: - //SEG119 [55] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG122 [57] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG120 [56] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG123 [58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG121 [57] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG124 [59] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1 lda sc cmp #div32u16u] + //SEG128 [62] call div32u16u + //SEG129 [135] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] jsr div32u16u - //SEG127 [61] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG128 sin16s_gen::@2 - //SEG129 [62] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG130 [63] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] - //SEG131 [63] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG130 [63] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG131 sin16s_gen::@2 + //SEG132 [64] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG133 [65] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] + //SEG134 [65] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #0 sta i sta i+1 - //SEG132 [63] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG135 [65] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG133 [63] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG136 [65] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 // u[4.28] - //SEG134 [63] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] - //SEG135 [63] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy - //SEG136 [63] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy - //SEG137 [63] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy - //SEG138 sin16s_gen::@1 + //SEG137 [65] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG138 [65] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy + //SEG139 [65] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy + //SEG140 [65] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy + //SEG141 sin16s_gen::@1 b1: - //SEG139 [64] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG142 [66] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -6070,19 +6124,19 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG140 [65] call sin16s + //SEG143 [67] call sin16s jsr sin16s - //SEG141 [66] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG142 sin16s_gen::@3 - //SEG143 [67] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG144 [68] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG144 [68] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG145 sin16s_gen::@3 + //SEG146 [69] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG147 [70] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG145 [69] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG148 [71] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -6090,7 +6144,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG146 [70] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG149 [72] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6104,12 +6158,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG147 [71] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG150 [73] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG148 [72] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG151 [74] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -6118,11 +6172,11 @@ sin16s_gen: { cmp #PI_u4f28>>$10 bcc b4 @@ -6158,8 +6212,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG155 [76] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG156 [76] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG158 [78] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG159 [78] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG157 [76] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG160 [78] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG158 [76] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG161 [78] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG159 [76] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG162 [78] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG160 [76] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG161 sin16s::@1 + //SEG163 [78] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG164 sin16s::@1 b1: - //SEG162 [77] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG165 [79] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2 @@ -6204,8 +6258,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG165 [79] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG166 [79] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG167 sin16s::@2 + //SEG168 [81] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG169 [81] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG170 sin16s::@2 b2: - //SEG168 [80] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 + //SEG171 [82] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _4 @@ -6232,71 +6286,71 @@ sin16s: { rol _4+3 dey bne !- - //SEG169 [81] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG172 [83] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG170 [82] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG173 [84] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG171 [83] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG174 [85] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG172 [84] call mulu16_sel - //SEG173 [114] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG174 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG175 [86] call mulu16_sel + //SEG176 [116] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG177 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG175 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG176 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG178 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG179 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG177 [85] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG178 sin16s::@7 - //SEG179 [86] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG180 [87] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG181 sin16s::@7 + //SEG182 [88] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG180 [87] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG181 [88] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG183 [89] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG184 [90] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG182 [89] call mulu16_sel - //SEG183 [114] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] - //SEG184 [114] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG185 [91] call mulu16_sel + //SEG186 [116] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG187 [116] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG185 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG186 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG188 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG189 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG187 [90] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG190 [92] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 - //SEG188 sin16s::@8 - //SEG189 [91] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG190 [92] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG191 [93] call mulu16_sel - //SEG192 [114] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG193 [114] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG191 sin16s::@8 + //SEG192 [93] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG193 [94] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG194 [95] call mulu16_sel + //SEG195 [116] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG196 [116] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG194 [114] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG197 [116] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG195 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG198 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG196 [94] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG197 sin16s::@9 - //SEG198 [95] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG199 [96] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG199 [96] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG200 sin16s::@9 + //SEG201 [97] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG202 [98] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6304,43 +6358,43 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG200 [97] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG201 [98] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG203 [99] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG204 [100] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG202 [99] call mulu16_sel - //SEG203 [114] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG204 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG205 [101] call mulu16_sel + //SEG206 [116] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG207 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG205 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG206 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG208 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG209 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG207 [100] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG210 [102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 - //SEG208 sin16s::@10 - //SEG209 [101] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG210 [102] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG211 [103] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG211 sin16s::@10 + //SEG212 [103] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG213 [104] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG214 [105] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG212 [104] call mulu16_sel - //SEG213 [114] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG214 [114] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG215 [106] call mulu16_sel + //SEG216 [116] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG217 [116] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG215 [114] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG216 [114] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG218 [116] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG219 [116] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG217 [105] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG218 sin16s::@11 - //SEG219 [106] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG220 [107] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + //SEG220 [107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG221 sin16s::@11 + //SEG222 [108] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG223 [109] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr x5_128+1 ror x5_128 lsr x5_128+1 @@ -6349,7 +6403,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG221 [108] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG224 [110] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6357,12 +6411,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG222 [109] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG225 [111] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG223 sin16s::@6 - //SEG224 [110] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG226 sin16s::@6 + //SEG227 [112] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc sinx @@ -6370,17 +6424,17 @@ sin16s: { lda #0 sbc sinx+1 sta sinx+1 - //SEG225 [111] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] - //SEG226 [111] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG227 sin16s::@3 + //SEG228 [113] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG229 [113] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG230 sin16s::@3 b3: - //SEG228 sin16s::@return - //SEG229 [112] return + //SEG231 sin16s::@return + //SEG232 [114] return rts - //SEG230 sin16s::@12 - //SEG231 [113] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG233 sin16s::@12 + //SEG234 [115] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG232 mulu16_sel +//SEG235 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($1b) v1, word zeropage($1d) v2, byte register(X) select) @@ -6392,19 +6446,19 @@ mulu16_sel: { .label return = $35 .label return_1 = $1b .label return_10 = $1b - //SEG233 [115] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG236 [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG234 [116] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 - //SEG235 [117] call mul16u - //SEG236 [123] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG237 [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + //SEG238 [119] call mul16u + //SEG239 [125] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] jsr mul16u - //SEG237 [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG238 mulu16_sel::@1 - //SEG239 [119] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG240 [120] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG240 [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG241 mulu16_sel::@1 + //SEG242 [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG243 [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -6415,16 +6469,16 @@ mulu16_sel: { dex bne !- !e: - //SEG241 [121] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG244 [123] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG242 mulu16_sel::@return - //SEG243 [122] return + //SEG245 mulu16_sel::@return + //SEG246 [124] return rts } -//SEG244 mul16u +//SEG247 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($1f) a, word zeropage($1d) b) mul16u: { @@ -6433,8 +6487,8 @@ mul16u: { .label res = $21 .label b = $1d .label return = $21 - //SEG245 [124] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG246 [124] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 + //SEG248 [126] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG249 [126] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 lda b sta mb lda b+1 @@ -6442,32 +6496,32 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG247 [124] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG250 [126] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 sta res sta res+1 sta res+2 sta res+3 - //SEG248 [124] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG249 mul16u::@1 + //SEG251 [126] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG252 mul16u::@1 b1: - //SEG250 [125] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG253 [127] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 - //SEG251 mul16u::@return - //SEG252 [126] return + //SEG254 mul16u::@return + //SEG255 [128] return rts - //SEG253 mul16u::@2 + //SEG256 mul16u::@2 b2: - //SEG254 [127] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG257 [129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG255 [128] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG258 [130] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG256 mul16u::@4 - //SEG257 [129] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG259 mul16u::@4 + //SEG260 [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6481,64 +6535,64 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG258 [130] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] - //SEG259 [130] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy - //SEG260 mul16u::@3 + //SEG261 [132] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG262 [132] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG263 mul16u::@3 b3: - //SEG261 [131] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG264 [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG262 [132] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG265 [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG263 [124] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] - //SEG264 [124] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG265 [124] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG266 [124] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG266 [126] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG267 [126] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG268 [126] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG269 [126] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG267 div32u16u +//SEG270 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $37 .label quotient_lo = $2d .label return = $2f - //SEG268 [134] call divr16u - //SEG269 [143] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG270 [143] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG271 [136] call divr16u + //SEG272 [145] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG273 [145] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG271 [143] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG274 [145] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG272 [135] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG273 div32u16u::@1 - //SEG274 [136] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG275 [137] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG276 div32u16u::@1 + //SEG277 [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG275 [137] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG276 [138] call divr16u - //SEG277 [143] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] - //SEG278 [143] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG278 [139] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG279 [140] call divr16u + //SEG280 [145] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG281 [145] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG279 [143] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG282 [145] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG280 [139] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG281 div32u16u::@2 - //SEG282 [140] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG283 [141] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG283 [141] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG284 div32u16u::@2 + //SEG285 [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG286 [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -6547,11 +6601,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG284 div32u16u::@return - //SEG285 [142] return + //SEG287 div32u16u::@return + //SEG288 [144] return rts } -//SEG286 divr16u +//SEG289 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6562,48 +6616,48 @@ divr16u: { .label dividend = $2b .label quotient = $2d .label return = $2d - //SEG287 [144] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG288 [144] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG290 [146] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG291 [146] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG289 [144] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG292 [146] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG290 [144] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG291 [144] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG292 [144] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG293 [144] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG294 [144] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG295 [144] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG296 [144] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG297 divr16u::@1 + //SEG293 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG294 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG295 [146] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG296 [146] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG297 [146] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG298 [146] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG299 [146] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG300 divr16u::@1 b1: - //SEG298 [145] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG301 [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG299 [146] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG302 [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG300 [147] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG303 [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG301 [148] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG304 [150] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG302 divr16u::@4 - //SEG303 [149] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG305 divr16u::@4 + //SEG306 [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG304 [150] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG305 [150] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG306 divr16u::@2 + //SEG307 [152] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG308 [152] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG309 divr16u::@2 b2: - //SEG307 [151] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG310 [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG308 [152] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG311 [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG309 [153] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG312 [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3 @@ -6612,13 +6666,13 @@ divr16u: { cmp #main.wavelength sta rem+1 - //SEG313 [156] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG314 [156] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG315 [156] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG316 divr16u::@3 + //SEG316 [158] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG317 [158] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG318 [158] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG319 divr16u::@3 b3: - //SEG317 [157] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG320 [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG318 [158] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG321 [160] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG319 divr16u::@6 - //SEG320 [159] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG321 divr16u::@return - //SEG322 [160] return + //SEG322 divr16u::@6 + //SEG323 [161] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG324 divr16u::@return + //SEG325 [162] return rts } -//SEG323 File Data +//SEG326 File Data print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgen16.sym b/src/test/ref/sinusgen16.sym index 8652f095d..347da1546 100644 --- a/src/test/ref/sinusgen16.sym +++ b/src/test/ref/sinusgen16.sym @@ -137,19 +137,17 @@ (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#4 reg byte a 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:8 101.0 -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:8 1.1176470588235294 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:8 0.7083333333333334 (byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:8 40.875 -(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:8 5.0 -(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:8 2.0 -(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:8 2.0 -(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:8 6.5 -(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:8 8.25 -(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:8 24.0 +(byte*) print_char_cursor#35 print_char_cursor zp ZP_WORD:8 6.0 +(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:8 5.200000000000001 +(byte*) print_char_cursor#52 print_char_cursor zp ZP_WORD:8 8.25 +(byte*) print_char_cursor#54 print_char_cursor zp ZP_WORD:8 24.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -173,11 +171,12 @@ (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:6 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:6 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:6 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:6 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -252,10 +251,10 @@ zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 print_word::w#0 ] +zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] +reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:8 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:8 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ] zp ZP_DWORD:12 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:16 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] diff --git a/src/test/ref/sinusgen16b.asm b/src/test/ref/sinusgen16b.asm index 2ba671ae5..6a6c8257f 100644 --- a/src/test/ref/sinusgen16b.asm +++ b/src/test/ref/sinusgen16b.asm @@ -15,7 +15,7 @@ .const PI_HALF_u4f12 = $1922 .label print_line_cursor = $400 .label rem16u = $29 - .label print_char_cursor = $b + .label print_char_cursor = $a main: { .label wavelength = $78 .label sw = 8 @@ -112,7 +112,13 @@ print_str: { print_sword: { .label w = 8 lda w+1 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_word + rts + b1: lda #'-' jsr print_char sec @@ -122,8 +128,17 @@ print_sword: { lda #0 sbc w+1 sta w+1 - b1: - jsr print_word + jmp b2 +} +// Print a single char +// print_char(byte register(A) ch) +print_char: { + ldy #0 + sta (print_char_cursor),y + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: rts } // Print a word as HEX @@ -139,9 +154,9 @@ print_word: { rts } // Print a byte as HEX -// print_byte(byte zeropage($a) b) +// print_byte(byte zeropage($c) b) print_byte: { - .label b = $a + .label b = $c lda b lsr lsr @@ -157,17 +172,6 @@ print_byte: { jsr print_char rts } -// Print a single char -// print_char(byte register(A) ch) -print_char: { - ldy #0 - sta (print_char_cursor),y - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - rts -} // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $d diff --git a/src/test/ref/sinusgen16b.cfg b/src/test/ref/sinusgen16b.cfg index b184b5eb6..567b5c948 100644 --- a/src/test/ref/sinusgen16b.cfg +++ b/src/test/ref/sinusgen16b.cfg @@ -21,7 +21,7 @@ main::@5: scope:[main] from main::@4 to:main::@1 main::@1: scope:[main] from main::@5 main::@7 [10] (byte) main::i#2 ← phi( main::@5/(byte) 0 main::@7/(byte) main::i#1 ) - [10] (byte*) print_char_cursor#49 ← phi( main::@5/(const byte*) print_line_cursor#0 main::@7/(byte*) print_char_cursor#2 ) + [10] (byte*) print_char_cursor#52 ← phi( main::@5/(const byte*) print_line_cursor#0 main::@7/(byte*) print_char_cursor#2 ) [10] (signed word*) main::st2#2 ← phi( main::@5/(const signed word[$78]) main::sintab2#0 main::@7/(signed word*) main::st2#1 ) [10] (signed word*) main::st1#2 ← phi( main::@5/(const signed word[$78]) main::sintab1#0 main::@7/(signed word*) main::st1#1 ) [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) @@ -32,7 +32,7 @@ main::@3: scope:[main] from main::@1 [14] call print_str to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [15] (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#49 main::@3/(byte*) print_char_cursor#2 ) + [15] (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#52 main::@3/(byte*) print_char_cursor#2 ) [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [17] call print_sword to:main::@6 @@ -50,11 +50,11 @@ main::@return: scope:[main] from main::@7 [24] return to:@return print_str: scope:[print_str] from main::@3 main::@6 - [25] (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@6/(byte*) print_char_cursor#12 ) + [25] (byte*) print_char_cursor#54 ← phi( main::@3/(byte*) print_char_cursor#52 main::@6/(byte*) print_char_cursor#13 ) [25] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@6/(const string) main::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [26] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 ) + [26] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#54 print_str::@2/(byte*) print_char_cursor#1 ) [26] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -67,357 +67,359 @@ print_str::@2: scope:[print_str] from print_str::@1 [31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 to:print_str::@1 print_sword: scope:[print_sword] from main::@2 - [32] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [33] phi() [34] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [36] (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#48 print_sword::@3/(byte*) print_char_cursor#12 ) - [36] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [37] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [38] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [35] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [37] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [39] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [38] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [40] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [41] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [42] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [43] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [44] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [45] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 ) - [45] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [46] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [47] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [48] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [49] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [51] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [52] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - [53] (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#48 ) - [53] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [54] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 - [55] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 +print_sword::@1: scope:[print_sword] from print_sword + [39] phi() + [40] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [42] (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#51 print_sword::@3/(byte*) print_char_cursor#51 ) + [42] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 + [44] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [56] return + [45] return + to:@return +print_word: scope:[print_word] from print_sword::@2 + [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [47] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [49] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [50] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [51] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [54] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [57] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [58] return to:@return print_cls: scope:[print_cls] from main::@5 - [57] phi() + [59] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [58] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [59] *((byte*) print_cls::sc#2) ← (byte) ' ' - [60] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [61] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 + [60] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [61] *((byte*) print_cls::sc#2) ← (byte) ' ' + [62] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [63] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [62] return + [64] return to:@return sin16s_genb: scope:[sin16s_genb] from main::@4 - [63] phi() - [64] call div32u16u - [65] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 + [65] phi() + [66] call div32u16u + [67] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 to:sin16s_genb::@2 sin16s_genb::@2: scope:[sin16s_genb] from sin16s_genb - [66] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 + [68] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 to:sin16s_genb::@1 sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@2 sin16s_genb::@3 - [67] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(word) sin16s_genb::i#1 ) - [67] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@2/(const signed word[$78]) main::sintab2#0 sin16s_genb::@3/(signed word*) sin16s_genb::sintab#0 ) - [67] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(dword) sin16s_genb::x#1 ) - [68] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 - [69] call sin16sb - [70] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 + [69] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(word) sin16s_genb::i#1 ) + [69] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@2/(const signed word[$78]) main::sintab2#0 sin16s_genb::@3/(signed word*) sin16s_genb::sintab#0 ) + [69] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(dword) sin16s_genb::x#1 ) + [70] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 + [71] call sin16sb + [72] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 to:sin16s_genb::@3 sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb::@1 - [71] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 - [72] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 - [73] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD - [74] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 - [75] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 - [76] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 + [73] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 + [74] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 + [75] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [76] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 + [77] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 + [78] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 to:sin16s_genb::@return sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@3 - [77] return + [79] return to:@return sin16sb: scope:[sin16sb] from sin16s_genb::@1 - [78] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 + [80] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 to:sin16sb::@4 sin16sb::@4: scope:[sin16sb] from sin16sb - [79] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 + [81] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 to:sin16sb::@1 sin16sb::@1: scope:[sin16sb] from sin16sb sin16sb::@4 - [80] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte) 0 sin16sb::@4/(byte) 1 ) - [80] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 ) - [81] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 + [82] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte) 0 sin16sb::@4/(byte) 1 ) + [82] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 ) + [83] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 to:sin16sb::@5 sin16sb::@5: scope:[sin16sb] from sin16sb::@1 - [82] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 + [84] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 to:sin16sb::@2 sin16sb::@2: scope:[sin16sb] from sin16sb::@1 sin16sb::@5 - [83] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 ) - [84] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 - [85] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 - [86] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 - [87] call mulu16_sel - [88] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 + [85] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 ) + [86] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 + [87] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 + [88] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 + [89] call mulu16_sel + [90] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 to:sin16sb::@7 sin16sb::@7: scope:[sin16sb] from sin16sb::@2 - [89] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 - [90] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 - [91] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 - [92] call mulu16_sel - [93] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 + [91] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 + [92] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 + [93] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 + [94] call mulu16_sel + [95] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 to:sin16sb::@8 sin16sb::@8: scope:[sin16sb] from sin16sb::@7 - [94] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 - [95] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 - [96] call mulu16_sel - [97] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 + [96] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 + [97] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 + [98] call mulu16_sel + [99] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 to:sin16sb::@9 sin16sb::@9: scope:[sin16sb] from sin16sb::@8 - [98] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 - [99] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 - [100] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 - [101] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 - [102] call mulu16_sel - [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 + [100] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 + [101] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 + [102] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 + [103] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 + [104] call mulu16_sel + [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 to:sin16sb::@10 sin16sb::@10: scope:[sin16sb] from sin16sb::@9 - [104] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 - [105] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 - [106] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 - [107] call mulu16_sel - [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 + [106] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 + [107] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 + [108] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 + [109] call mulu16_sel + [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 to:sin16sb::@11 sin16sb::@11: scope:[sin16sb] from sin16sb::@10 - [109] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 - [110] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 - [111] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 - [112] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 + [111] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 + [112] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 + [113] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 + [114] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 to:sin16sb::@6 sin16sb::@6: scope:[sin16sb] from sin16sb::@11 - [113] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 + [115] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 to:sin16sb::@3 sin16sb::@3: scope:[sin16sb] from sin16sb::@12 sin16sb::@6 - [114] (signed word) sin16sb::return#1 ← phi( sin16sb::@12/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 ) + [116] (signed word) sin16sb::return#1 ← phi( sin16sb::@12/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 ) to:sin16sb::@return sin16sb::@return: scope:[sin16sb] from sin16sb::@3 - [115] return + [117] return to:@return sin16sb::@12: scope:[sin16sb] from sin16sb::@11 - [116] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 + [118] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 to:sin16sb::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 sin16sb::@10 sin16sb::@2 sin16sb::@7 sin16sb::@8 sin16sb::@9 - [117] (byte) mulu16_sel::select#10 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16sb::@9/(byte) 0 sin16sb::@10/(byte) 0 sin16sb::@2/(byte) 0 sin16sb::@7/(byte) 1 sin16sb::@8/(byte) 1 ) - [117] (word) mulu16_sel::v2#10 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16sb::@9/(word) mulu16_sel::v2#8 sin16sb::@10/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@7/(word) mulu16_sel::v2#6 sin16sb::@8/(word)(number) $10000/(number) 6 ) - [117] (word) mulu16_sel::v1#10 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16sb::@9/(word) mulu16_sel::v1#8 sin16sb::@10/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@7/(word) mulu16_sel::v1#6 sin16sb::@8/(word) mulu16_sel::v1#7 ) - [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 - [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 - [120] call mul16u - [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [119] (byte) mulu16_sel::select#10 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16sb::@9/(byte) 0 sin16sb::@10/(byte) 0 sin16sb::@2/(byte) 0 sin16sb::@7/(byte) 1 sin16sb::@8/(byte) 1 ) + [119] (word) mulu16_sel::v2#10 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16sb::@9/(word) mulu16_sel::v2#8 sin16sb::@10/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@7/(word) mulu16_sel::v2#6 sin16sb::@8/(word)(number) $10000/(number) 6 ) + [119] (word) mulu16_sel::v1#10 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16sb::@9/(word) mulu16_sel::v1#8 sin16sb::@10/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@7/(word) mulu16_sel::v1#6 sin16sb::@8/(word) mulu16_sel::v1#7 ) + [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 + [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 + [122] call mul16u + [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 - [124] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 + [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 + [126] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [125] return + [127] return to:@return mul16u: scope:[mul16u] from mulu16_sel - [126] phi() + [128] phi() to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [127] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 ) - [127] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [127] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 ) - [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 + [129] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 ) + [129] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [129] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 ) + [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [129] return + [131] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 - [131] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 + [133] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [133] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 - [135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [135] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [136] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 + [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 div32u16u: scope:[div32u16u] from sin16s_gen sin16s_genb - [136] phi() - [137] call divr16u - [138] (word) divr16u::return#2 ← (word) divr16u::return#0 + [138] phi() + [139] call divr16u + [140] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [140] (word) divr16u::rem#4 ← (word) rem16u#1 - [141] call divr16u - [142] (word) divr16u::return#3 ← (word) divr16u::return#0 + [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [142] (word) divr16u::rem#4 ← (word) rem16u#1 + [143] call divr16u + [144] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [145] return + [147] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [146] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) - [146] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [148] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) + [148] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [147] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [147] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [147] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [147] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [148] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [151] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [149] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [149] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [149] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [149] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [150] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [152] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [153] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [153] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [156] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 + [155] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [156] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [157] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [158] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [158] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 + [159] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [159] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [159] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [161] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [161] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [161] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [162] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [163] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [162] (word) rem16u#1 ← (word) divr16u::rem#11 + [164] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [163] return + [165] return to:@return sin16s_gen: scope:[sin16s_gen] from main - [164] phi() - [165] call div32u16u - [166] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + [166] phi() + [167] call div32u16u + [168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 to:sin16s_gen::@2 sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen - [167] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + [169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 to:sin16s_gen::@1 sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3 - [168] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 ) - [168] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 ) - [168] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 ) - [169] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 - [170] call sin16s - [171] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + [170] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 ) + [170] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 ) + [170] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 ) + [171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 + [172] call sin16s + [173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 to:sin16s_gen::@3 sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1 - [172] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - [173] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 - [174] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD - [175] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 - [176] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 - [177] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 + [174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + [175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 + [176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 + [178] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 + [179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 to:sin16s_gen::@return sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@3 - [178] return + [180] return to:@return sin16s: scope:[sin16s] from sin16s_gen::@1 - [179] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [180] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [181] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) - [181] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [182] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [183] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) + [183] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [183] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [184] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [185] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 - [186] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [187] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [188] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [189] call mulu16_sel - [190] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 + [186] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [187] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 + [188] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [191] call mulu16_sel + [192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [191] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [192] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [193] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [194] call mulu16_sel - [195] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 + [193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [196] call mulu16_sel + [197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [196] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [197] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [198] call mulu16_sel - [199] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 + [198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [200] call mulu16_sel + [201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [200] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 - [201] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [202] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [203] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [204] call mulu16_sel - [205] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 + [202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 + [203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [206] call mulu16_sel + [207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [206] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 - [207] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [208] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [209] call mulu16_sel - [210] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 + [208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 + [209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [211] call mulu16_sel + [212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [211] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 - [212] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 - [213] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [214] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 + [213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 + [214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 + [215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [216] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [215] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [216] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [218] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [217] return + [219] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [218] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log index 71ae1968e..52fac1bce 100644 --- a/src/test/ref/sinusgen16b.log +++ b/src/test/ref/sinusgen16b.log @@ -45,6 +45,7 @@ Culled Empty Block (label) print_str::@6 Culled Empty Block (label) @25 Culled Empty Block (label) @26 Culled Empty Block (label) @27 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @28 Culled Empty Block (label) @29 Culled Empty Block (label) @30 @@ -618,127 +619,137 @@ sin16sb::@return: scope:[sin16sb] from sin16sb::@3 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@34 print_str: scope:[print_str] from main::@3 main::@8 - (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@8/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#54 ← phi( main::@3/(byte*) print_char_cursor#52 main::@8/(byte*) print_char_cursor#18 ) (byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@8/(byte*) print_str::str#1 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#42 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#44 ← phi( print_str/(byte*) print_char_cursor#54 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#3) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#22 ← phi( print_str::@1/(byte*) print_char_cursor#42 ) + (byte*) print_char_cursor#23 ← phi( print_str::@1/(byte*) print_char_cursor#44 ) (byte*) print_str::str#4 ← phi( print_str::@1/(byte*) print_str::str#3 ) - *((byte*) print_char_cursor#22) ← *((byte*) print_str::str#4) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#22 + *((byte*) print_char_cursor#23) ← *((byte*) print_str::str#4) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#23 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#23 ← phi( print_str::@1/(byte*) print_char_cursor#42 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#23 + (byte*) print_char_cursor#24 ← phi( print_str::@1/(byte*) print_char_cursor#44 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#24 return to:@return print_sword: scope:[print_sword] from main::@2 - (byte*) print_char_cursor#52 ← phi( main::@2/(byte*) print_char_cursor#48 ) + (byte*) print_char_cursor#55 ← phi( main::@2/(byte*) print_char_cursor#51 ) (signed word) print_sword::w#2 ← phi( main::@2/(signed word) print_sword::w#1 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#52 print_sword::@4/(byte*) print_char_cursor#4 ) - (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#2 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#3 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#24 ← phi( print_sword::@1/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#24 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#2 ) - (byte*) print_char_cursor#44 ← phi( print_sword/(byte*) print_char_cursor#52 ) + (byte*) print_char_cursor#45 ← phi( print_sword/(byte*) print_char_cursor#55 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#4 ← phi( print_sword::@2/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#25 ← phi( print_sword::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#25 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#3 ← phi( print_sword::@1/(signed word) print_sword::w#5 ) + (byte*) print_char_cursor#25 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#25 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#3 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#26 ← phi( print_sword::@3/(byte*) print_char_cursor#3 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#26 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#7 ← phi( print_sword/(signed word) print_sword::w#2 ) + (byte*) print_char_cursor#46 ← phi( print_sword/(byte*) print_char_cursor#55 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#6 ← phi( print_sword::@3/(signed word) print_sword::w#7 ) + (byte*) print_char_cursor#26 ← phi( print_sword::@3/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#26 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#47 ← phi( print_sword::@5/(byte*) print_char_cursor#3 print_sword::@6/(byte*) print_char_cursor#4 ) + (signed word) print_sword::w#4 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#6 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#4 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#27 ← phi( print_sword::@2/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#27 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#28 ← phi( print_sword::@7/(byte*) print_char_cursor#5 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#28 return to:@return -print_word: scope:[print_word] from print_sword::@1 - (byte*) print_char_cursor#45 ← phi( print_sword::@1/(byte*) print_char_cursor#43 ) - (word) print_word::w#1 ← phi( print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from print_sword::@2 + (byte*) print_char_cursor#48 ← phi( print_sword::@2/(byte*) print_char_cursor#47 ) + (word) print_word::w#1 ← phi( print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#1 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#2 ← phi( print_word/(word) print_word::w#1 ) - (byte*) print_char_cursor#27 ← phi( print_word/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#27 + (byte*) print_char_cursor#29 ← phi( print_word/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#29 (byte~) print_word::$2 ← < (word) print_word::w#2 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#28 ← phi( print_word::@1/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#28 + (byte*) print_char_cursor#30 ← phi( print_word::@1/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#30 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#29 ← phi( print_word::@2/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29 + (byte*) print_char_cursor#31 ← phi( print_word::@2/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#31 return to:@return @34: scope:[] from @22 (byte*) print_screen#8 ← phi( @22/(byte*) print_screen#0 ) - (byte*) print_char_cursor#55 ← phi( @22/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#58 ← phi( @22/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#15 ← phi( @22/(byte*) print_line_cursor#0 ) (word) rem16u#37 ← phi( @22/(word) rem16u#38 ) (byte[]) print_hextab#0 ← (const string) $0 to:@42 print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#49 ← phi( print_word/(byte*) print_char_cursor#48 print_word::@1/(byte*) print_char_cursor#7 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4 - (byte) print_char::ch#1 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char 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*) print_char_cursor#30 ← phi( print_byte/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#30 + (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#32 (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f - (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#31 ← phi( print_byte::@1/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#31 + (byte*) print_char_cursor#33 ← phi( print_byte::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#33 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#32 ← phi( print_byte::@2/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#32 + (byte*) print_char_cursor#34 ← phi( print_byte::@2/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#34 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#9 print_sword::@2/(byte*) print_char_cursor#44 ) - (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 - (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#49 print_byte::@1/(byte*) print_char_cursor#10 print_sword::@1/(byte*) print_char_cursor#45 print_sword::@3/(byte*) print_char_cursor#46 ) + (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 + (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#34 ← phi( print_char/(byte*) print_char_cursor#12 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#34 + (byte*) print_char_cursor#36 ← phi( print_char/(byte*) print_char_cursor#13 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#36 return to:@return print_cls: scope:[print_cls] from main::@6 @@ -757,17 +768,17 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#1 ← (byte*) print_screen#3 - (byte*) print_char_cursor#14 ← (byte*) print_line_cursor#1 + (byte*) print_char_cursor#15 ← (byte*) print_line_cursor#1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#35 ← phi( print_cls::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#37 ← phi( print_cls::@2/(byte*) print_char_cursor#15 ) (byte*) print_line_cursor#6 ← phi( print_cls::@2/(byte*) print_line_cursor#1 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#6 - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#35 + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#37 return to:@return main: scope:[main] from @42 - (byte*) print_char_cursor#56 ← phi( @42/(byte*) print_char_cursor#50 ) + (byte*) print_char_cursor#59 ← phi( @42/(byte*) print_char_cursor#53 ) (byte*) print_line_cursor#16 ← phi( @42/(byte*) print_line_cursor#12 ) (byte*) print_screen#6 ← phi( @42/(byte*) print_screen#7 ) (word) rem16u#31 ← phi( @42/(word) rem16u#33 ) @@ -779,7 +790,7 @@ main: scope:[main] from @42 call sin16s_gen to:main::@5 main::@5: scope:[main] from main - (byte*) print_char_cursor#53 ← phi( main/(byte*) print_char_cursor#56 ) + (byte*) print_char_cursor#56 ← phi( main/(byte*) print_char_cursor#59 ) (byte*) print_line_cursor#13 ← phi( main/(byte*) print_line_cursor#16 ) (byte*) print_screen#5 ← phi( main/(byte*) print_screen#6 ) (word) rem16u#22 ← phi( main/(word) rem16u#7 ) @@ -789,7 +800,7 @@ main::@5: scope:[main] from main call sin16s_genb to:main::@6 main::@6: scope:[main] from main::@5 - (byte*) print_char_cursor#47 ← phi( main::@5/(byte*) print_char_cursor#53 ) + (byte*) print_char_cursor#50 ← phi( main::@5/(byte*) print_char_cursor#56 ) (byte*) print_line_cursor#10 ← phi( main::@5/(byte*) print_line_cursor#13 ) (byte*) print_screen#4 ← phi( main::@5/(byte*) print_screen#5 ) (word) rem16u#23 ← phi( main::@5/(word) rem16u#9 ) @@ -798,10 +809,10 @@ main::@6: scope:[main] from main::@5 to:main::@7 main::@7: scope:[main] from main::@6 (word) rem16u#43 ← phi( main::@6/(word) rem16u#11 ) - (byte*) print_char_cursor#36 ← phi( main::@6/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#38 ← phi( main::@6/(byte*) print_char_cursor#16 ) (byte*) print_line_cursor#7 ← phi( main::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#7 - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#36 + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#38 (signed word*) main::st1#0 ← (signed word[$78]) main::sintab1#0 (signed word*) main::st2#0 ← (signed word[$78]) main::sintab2#0 (byte) main::i#0 ← (byte) 0 @@ -810,7 +821,7 @@ main::@1: scope:[main] from main::@7 main::@9 (byte*) print_line_cursor#18 ← phi( main::@7/(byte*) print_line_cursor#3 main::@9/(byte*) print_line_cursor#11 ) (word) rem16u#41 ← phi( main::@7/(word) rem16u#43 main::@9/(word) rem16u#32 ) (byte) main::i#5 ← phi( main::@7/(byte) main::i#0 main::@9/(byte) main::i#1 ) - (byte*) print_char_cursor#54 ← phi( main::@7/(byte*) print_char_cursor#16 main::@9/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#57 ← phi( main::@7/(byte*) print_char_cursor#17 main::@9/(byte*) print_char_cursor#19 ) (signed word*) main::st2#2 ← phi( main::@7/(signed word*) main::st2#0 main::@9/(signed word*) main::st2#1 ) (signed word*) main::st1#2 ← phi( main::@7/(signed word*) main::st1#0 main::@9/(signed word*) main::st1#1 ) (signed word~) main::$3 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) @@ -825,7 +836,7 @@ main::@2: scope:[main] from main::@1 main::@10 (byte) main::i#4 ← phi( main::@1/(byte) main::i#5 main::@10/(byte) main::i#6 ) (signed word*) main::st2#5 ← phi( main::@1/(signed word*) main::st2#2 main::@10/(signed word*) main::st2#6 ) (signed word*) main::st1#5 ← phi( main::@1/(signed word*) main::st1#2 main::@10/(signed word*) main::st1#6 ) - (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#54 main::@10/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#57 main::@10/(byte*) print_char_cursor#20 ) (signed word) main::sw#1 ← phi( main::@1/(signed word) main::sw#0 main::@10/(signed word) main::sw#2 ) (signed word) print_sword::w#1 ← (signed word) main::sw#1 call print_sword @@ -836,8 +847,8 @@ main::@8: scope:[main] from main::@2 (byte) main::i#3 ← phi( main::@2/(byte) main::i#4 ) (signed word*) main::st2#4 ← phi( main::@2/(signed word*) main::st2#5 ) (signed word*) main::st1#4 ← phi( main::@2/(signed word*) main::st1#5 ) - (byte*) print_char_cursor#37 ← phi( main::@2/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#37 + (byte*) print_char_cursor#39 ← phi( main::@2/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#39 (byte*) print_str::str#1 ← (const string) main::str call print_str to:main::@9 @@ -847,8 +858,8 @@ main::@9: scope:[main] from main::@8 (byte) main::i#2 ← phi( main::@8/(byte) main::i#3 ) (signed word*) main::st2#3 ← phi( main::@8/(signed word*) main::st2#4 ) (signed word*) main::st1#3 ← phi( main::@8/(signed word*) main::st1#4 ) - (byte*) print_char_cursor#38 ← phi( main::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#38 + (byte*) print_char_cursor#40 ← phi( main::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#40 (signed word*) main::st1#1 ← (signed word*) main::st1#3 + (const byte) SIZEOF_SIGNED_WORD (signed word*) main::st2#1 ← (signed word*) main::st2#3 + (const byte) SIZEOF_SIGNED_WORD (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,$77) @@ -862,7 +873,7 @@ main::@3: scope:[main] from main::@1 (signed word*) main::st2#7 ← phi( main::@1/(signed word*) main::st2#2 ) (signed word*) main::st1#7 ← phi( main::@1/(signed word*) main::st1#2 ) (signed word) main::sw#3 ← phi( main::@1/(signed word) main::sw#0 ) - (byte*) print_char_cursor#49 ← phi( main::@1/(byte*) print_char_cursor#54 ) + (byte*) print_char_cursor#52 ← phi( main::@1/(byte*) print_char_cursor#57 ) (byte*) print_str::str#2 ← (const string) main::str1 call print_str to:main::@10 @@ -873,32 +884,32 @@ main::@10: scope:[main] from main::@3 (signed word*) main::st2#6 ← phi( main::@3/(signed word*) main::st2#7 ) (signed word*) main::st1#6 ← phi( main::@3/(signed word*) main::st1#7 ) (signed word) main::sw#2 ← phi( main::@3/(signed word) main::sw#3 ) - (byte*) print_char_cursor#39 ← phi( main::@3/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#39 + (byte*) print_char_cursor#41 ← phi( main::@3/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#41 to:main::@2 main::@return: scope:[main] from main::@9 - (byte*) print_char_cursor#40 ← phi( main::@9/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#42 ← phi( main::@9/(byte*) print_char_cursor#19 ) (byte*) print_line_cursor#8 ← phi( main::@9/(byte*) print_line_cursor#11 ) (word) rem16u#24 ← phi( main::@9/(word) rem16u#32 ) (word) rem16u#12 ← (word) rem16u#24 (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#8 - (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#40 + (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#42 return to:@return @42: scope:[] from @34 (byte*) print_screen#7 ← phi( @34/(byte*) print_screen#8 ) - (byte*) print_char_cursor#50 ← phi( @34/(byte*) print_char_cursor#55 ) + (byte*) print_char_cursor#53 ← phi( @34/(byte*) print_char_cursor#58 ) (byte*) print_line_cursor#12 ← phi( @34/(byte*) print_line_cursor#15 ) (word) rem16u#33 ← phi( @34/(word) rem16u#37 ) call main to:@43 @43: scope:[] from @42 - (byte*) print_char_cursor#41 ← phi( @42/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#43 ← phi( @42/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#9 ← phi( @42/(byte*) print_line_cursor#4 ) (word) rem16u#25 ← phi( @42/(word) rem16u#12 ) (word) rem16u#13 ← (word) rem16u#25 (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9 - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41 + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#43 to:@end @end: scope:[] from @43 @@ -1220,6 +1231,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#1 (byte) print_char::ch#2 (byte) print_char::ch#3 +(byte) print_char::ch#4 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -1274,6 +1286,9 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#54 (byte*) print_char_cursor#55 (byte*) print_char_cursor#56 +(byte*) print_char_cursor#57 +(byte*) print_char_cursor#58 +(byte*) print_char_cursor#59 (byte*) print_char_cursor#6 (byte*) print_char_cursor#7 (byte*) print_char_cursor#8 @@ -1336,13 +1351,14 @@ SYMBOL TABLE SSA (byte*) print_str::str#5 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -1351,6 +1367,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#3 (signed word) print_sword::w#4 (signed word) print_sword::w#5 +(signed word) print_sword::w#6 +(signed word) print_sword::w#7 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -1753,7 +1771,7 @@ Inlining cast (byte) mulu16_sel::select#9 ← (unumber)(number) 0 Inlining cast (signed word~) sin16sb::$13 ← (signed word)(word) sin16sb::usinx#1 Inlining cast (signed word~) sin16sb::$18 ← (signed word)(word) sin16sb::usinx#3 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#3 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#4 Inlining cast (word) main::wavelength#0 ← (unumber)(number) $78 Successful SSA optimization Pass2InlineCast Simplifying constant integer cast 0 @@ -1876,8 +1894,7 @@ Inversing boolean not [189] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 == Inversing boolean not [247] (bool~) sin16sb::$1 ← (word) sin16sb::x#3 < (word) PI_u4f12#0 from [246] (bool~) sin16sb::$0 ← (word) sin16sb::x#3 >= (word) PI_u4f12#0 Inversing boolean not [251] (bool~) sin16sb::$3 ← (word) sin16sb::x#4 < (word) PI_HALF_u4f12#0 from [250] (bool~) sin16sb::$2 ← (word) sin16sb::x#4 >= (word) PI_HALF_u4f12#0 Inversing boolean not [309] (bool~) sin16sb::$15 ← (byte) sin16sb::isUpper#2 == (byte) 0 from [308] (bool~) sin16sb::$14 ← (byte) sin16sb::isUpper#2 != (byte) 0 -Inversing boolean not [340] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (signed byte) 0 from [339] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (signed byte) 0 -Inversing boolean not [434] (bool~) main::$5 ← (signed word) main::sw#0 < (signed byte) 0 from [433] (bool~) main::$4 ← (signed word) main::sw#0 >= (signed byte) 0 +Inversing boolean not [438] (bool~) main::$5 ← (signed word) main::sw#0 < (signed byte) 0 from [437] (bool~) main::$4 ← (signed word) main::sw#0 >= (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 @@ -1989,32 +2006,33 @@ Alias (byte) sin16sb::isUpper#8 = (byte) sin16sb::isUpper#9 Alias (word) sin16sb::x#2 = (word~) sin16sb::$17 Alias (signed word) sin16sb::return#1 = (signed word) sin16sb::sinx#2 (signed word) sin16sb::return#4 (signed word) sin16sb::return#2 Alias (signed word) sin16sb::sinx#1 = (signed word~) sin16sb::$19 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#15 (byte*) print_char_cursor#55 (byte*) print_screen#8 (byte*) print_line_cursor#12 (byte*) print_char_cursor#50 (byte*) print_screen#7 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#15 (byte*) print_char_cursor#58 (byte*) print_screen#8 (byte*) print_line_cursor#12 (byte*) print_char_cursor#53 (byte*) print_screen#7 Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#42 (byte*) print_char_cursor#23 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#3 (byte*) print_char_cursor#26 (byte*) print_char_cursor#5 -Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#52 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#4 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#23 (byte*) print_char_cursor#44 (byte*) print_char_cursor#24 +Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#46 +Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 +Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#3 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#4 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#28 (byte*) print_char_cursor#6 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#6 +Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#7 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#29 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#31 (byte*) print_char_cursor#9 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#32 (byte*) print_char_cursor#11 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#13 -Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#14 (byte*) print_line_cursor#6 (byte*) print_char_cursor#35 (byte*) print_line_cursor#2 (byte*) print_char_cursor#15 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#32 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#34 (byte*) print_char_cursor#12 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#14 +Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#15 (byte*) print_line_cursor#6 (byte*) print_char_cursor#37 (byte*) print_line_cursor#2 (byte*) print_char_cursor#16 Alias (byte*) print_screen#4 = (byte*) print_screen#5 (byte*) print_screen#6 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#56 +Alias (byte*) print_char_cursor#50 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#59 Alias (word) rem16u#10 = (word) rem16u#22 Alias (word) rem16u#11 = (word) rem16u#23 (word) rem16u#43 Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#38 Alias (signed word[$78]) main::sintab1#0 = (signed word*) main::st1#0 Alias (signed word[$78]) main::sintab2#0 = (signed word*) main::st2#0 Alias (signed word) main::sw#0 = (signed word~) main::$3 (signed word) main::sw#3 (signed word) main::sw#2 @@ -2023,18 +2041,18 @@ Alias (signed word*) main::st2#3 = (signed word*) main::st2#4 (signed word*) mai Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 Alias (word) rem16u#12 = (word) rem16u#36 (word) rem16u#39 (word) rem16u#32 (word) rem16u#24 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#17 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#40 (byte*) print_char_cursor#20 -Alias (byte*) print_char_cursor#49 = (byte*) print_char_cursor#54 +Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#42 (byte*) print_char_cursor#21 +Alias (byte*) print_char_cursor#52 = (byte*) print_char_cursor#57 Alias (signed word*) main::st1#2 = (signed word*) main::st1#7 (signed word*) main::st1#6 Alias (signed word*) main::st2#2 = (signed word*) main::st2#7 (signed word*) main::st2#6 Alias (byte) main::i#5 = (byte) main::i#7 (byte) main::i#6 Alias (word) rem16u#41 = (word) rem16u#44 (word) rem16u#42 Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#19 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#41 Alias (word) rem16u#13 = (word) rem16u#25 Alias (byte*) print_line_cursor#5 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#41 +Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#43 Successful SSA optimization Pass2AliasElimination Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 @@ -2085,33 +2103,38 @@ Identical Phi Values (word) sin16s_genb::wavelength#2 (word) sin16s_genb::wavele Identical Phi Values (word) rem16u#21 (word) rem16u#20 Identical Phi Values (word) sin16sb::x#3 (word) sin16sb::x#0 Identical Phi Values (signed word) print_sword::w#2 (signed word) print_sword::w#1 -Identical Phi Values (byte*) print_char_cursor#44 (byte*) print_char_cursor#48 -Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#28 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_char_cursor#51 +Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#30 Identical Phi Values (word) print_word::w#1 (word) print_word::w#0 -Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_char_cursor#43 -Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#48 (byte*) print_char_cursor#47 +Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#13 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#1 (byte*) print_screen#1 Identical Phi Values (word) rem16u#31 (word) rem16u#0 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#50 (byte*) print_line_cursor#0 Identical Phi Values (word) rem16u#10 (word) rem16u#19 Identical Phi Values (word) rem16u#11 (word) rem16u#21 Identical Phi Values (byte*) print_line_cursor#3 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_line_cursor#1 Identical Phi Values (word) rem16u#12 (word) rem16u#11 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#3 -Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#24 -Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#27 Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#2 Identical Phi Values (word) rem16u#13 (word) rem16u#12 Identical Phi Values (byte*) print_line_cursor#5 (byte*) print_line_cursor#11 -Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#19 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#49 (byte*) print_char_cursor#13 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) divr16u::$4 [11] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 Simple Condition (bool~) divr16u::$9 [19] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 @@ -2127,15 +2150,15 @@ Simple Condition (bool~) sin16sb::$1 [248] if((word) sin16sb::x#0<(word) PI_u4f1 Simple Condition (bool~) sin16sb::$3 [252] if((word) sin16sb::x#4<(word) PI_HALF_u4f12#0) goto sin16sb::@2 Simple Condition (bool~) sin16sb::$15 [310] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@3 Simple Condition (bool~) print_str::$0 [330] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_sword::$1 [341] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_cls::$1 [401] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) main::$5 [435] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 -Simple Condition (bool~) main::$9 [449] if((byte) main::i#1!=rangelast(0,$77)) goto main::@1 +Simple Condition (bool~) print_sword::$0 [340] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_cls::$1 [405] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) main::$5 [439] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 +Simple Condition (bool~) main::$9 [453] if((byte) main::i#1!=rangelast(0,$77)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [157] (word) mulu16_sel::v2#2 ← (unumber)(number) $10000/(number) 6 Constant right-side identified [277] (word) mulu16_sel::v2#7 ← (unumber)(number) $10000/(number) 6 -Constant right-side identified [411] (signed word[$78]) main::sintab1#0 ← { fill( $78, 0) } -Constant right-side identified [412] (signed word[$78]) main::sintab2#0 ← { fill( $78, 0) } +Constant right-side identified [415] (signed word[$78]) main::sintab1#0 ← { fill( $78, 0) } +Constant right-side identified [416] (signed word[$78]) main::sintab2#0 ← { fill( $78, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 @@ -2169,6 +2192,7 @@ Constant (const byte) mulu16_sel::select#8 = 0 Constant (const byte) mulu16_sel::select#9 = 0 Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' +Constant (const byte) print_char::ch#1 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const word) main::wavelength#0 = $78 Constant (const signed word[$78]) main::sintab1#0 = { fill( $78, 0) } @@ -2190,8 +2214,8 @@ Constant (const word) div32u16u::divisor#1 = sin16s_genb::wavelength#0 Successful SSA optimization Pass2ConstantIdentification Resolved ranged next value [24] divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value [26] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 -Resolved ranged next value [447] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [449] if(main::i#1!=rangelast(0,$77)) goto main::@1 to (number) $78 +Resolved ranged next value [451] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [453] if(main::i#1!=rangelast(0,$77)) goto main::@1 to (number) $78 Eliminating unused variable - keeping the phi block (word) rem16u#26 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const word) rem16u#0 @@ -2205,7 +2229,7 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $10 Finalized unsigned number type (byte) $78 Successful SSA optimization PassNFinalizeNumberTypeConversions -Constant right-side identified [193] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [194] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Successful SSA optimization Pass2ConstantIdentification @@ -2250,6 +2274,7 @@ Inlining constant with var siblings (const byte) sin16sb::isUpper#1 Inlining constant with var siblings (const byte*) print_str::str#1 Inlining constant with var siblings (const byte*) print_str::str#2 Inlining constant with var siblings (const byte) print_char::ch#0 +Inlining constant with var siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte) main::i#0 Constant inlined divr16u::rem#3 = (byte) 0 @@ -2284,6 +2309,7 @@ Constant inlined mulu16_sel::select#9 = (byte) 0 Constant inlined mulu16_sel::select#6 = (byte) 1 Constant inlined sin16s_gen::sintab#1 = (const signed word[$78]) main::sintab1#0 Constant inlined mulu16_sel::select#7 = (byte) 1 +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined mulu16_sel::v2#2 = (word)(number) $10000/(number) 6 Constant inlined print_char::ch#0 = (byte) '-' Constant inlined sin16s_gen::x#0 = (byte) 0 @@ -2328,7 +2354,6 @@ Added new block during phi lifting sin16sb::@13(between sin16sb and sin16sb::@1) Fixing phi predecessor for sin16sb::isUpper#2 to new block ( sin16sb -> sin16sb::@13 ) during phi lifting. Added new block during phi lifting sin16sb::@14(between sin16sb::@1 and sin16sb::@2) Added new block during phi lifting sin16sb::@15(between sin16sb::@12 and sin16sb::@3) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting main::@11(between main::@9 and main::@1) Added new block during phi lifting main::@12(between main::@1 and main::@2) @@ -2344,7 +2369,7 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@6 Adding NOP phi() at start of main::@7 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 Adding NOP phi() at start of print_cls @@ -2356,97 +2381,94 @@ Adding NOP phi() at start of sin16s_gen CALL GRAPH Calls in [] to main:6 Calls in [main] to sin16s_gen:10 sin16s_genb:12 print_cls:14 print_str:20 print_sword:24 print_str:26 -Calls in [print_sword] to print_char:50 print_word:56 -Calls in [print_word] to print_byte:64 print_byte:68 -Calls in [print_byte] to print_char:76 print_char:81 -Calls in [sin16s_genb] to div32u16u:97 sin16sb:102 -Calls in [sin16sb] to mulu16_sel:127 mulu16_sel:134 mulu16_sel:139 mulu16_sel:147 mulu16_sel:154 -Calls in [mulu16_sel] to mul16u:170 -Calls in [div32u16u] to divr16u:194 divr16u:199 -Calls in [sin16s_gen] to div32u16u:235 sin16s:240 -Calls in [sin16s] to mulu16_sel:266 mulu16_sel:273 mulu16_sel:278 mulu16_sel:286 mulu16_sel:293 +Calls in [print_sword] to print_char:50 print_word:54 print_char:58 +Calls in [print_word] to print_byte:67 print_byte:70 +Calls in [print_byte] to print_char:78 print_char:83 +Calls in [sin16s_genb] to div32u16u:95 sin16sb:100 +Calls in [sin16sb] to mulu16_sel:125 mulu16_sel:132 mulu16_sel:137 mulu16_sel:145 mulu16_sel:152 +Calls in [mulu16_sel] to mul16u:168 +Calls in [div32u16u] to divr16u:192 divr16u:197 +Calls in [sin16s_gen] to div32u16u:233 sin16s:238 +Calls in [sin16s] to mulu16_sel:264 mulu16_sel:271 mulu16_sel:276 mulu16_sel:284 mulu16_sel:291 -Created 46 initial phi equivalence classes -Coalesced [19] print_char_cursor#57 ← print_char_cursor#49 +Created 44 initial phi equivalence classes +Coalesced [19] print_char_cursor#60 ← print_char_cursor#52 Coalesced [21] print_char_cursor#70 ← print_char_cursor#2 -Coalesced [25] print_char_cursor#58 ← print_char_cursor#12 +Coalesced [25] print_char_cursor#61 ← print_char_cursor#13 Coalesced [32] main::st1#8 ← main::st1#1 Coalesced [33] main::st2#8 ← main::st2#1 Coalesced [34] print_char_cursor#68 ← print_char_cursor#2 Coalesced [35] main::i#8 ← main::i#1 -Coalesced (already) [36] print_char_cursor#69 ← print_char_cursor#49 +Coalesced (already) [36] print_char_cursor#69 ← print_char_cursor#52 Coalesced [38] print_str::str#6 ← print_str::str#5 -Coalesced (already) [39] print_char_cursor#59 ← print_char_cursor#51 +Coalesced (already) [39] print_char_cursor#62 ← print_char_cursor#54 Coalesced [46] print_str::str#7 ← print_str::str#0 -Coalesced [47] print_char_cursor#60 ← print_char_cursor#1 -Coalesced [49] print_char_cursor#67 ← print_char_cursor#48 -Coalesced [52] print_sword::w#7 ← print_sword::w#0 -Coalesced [53] print_char_cursor#62 ← print_char_cursor#12 -Coalesced [59] print_sword::w#6 ← print_sword::w#1 -Coalesced (already) [60] print_char_cursor#61 ← print_char_cursor#48 -Coalesced [62] print_byte::b#4 ← print_byte::b#0 -Coalesced [63] print_char_cursor#63 ← print_char_cursor#43 -Coalesced [66] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [67] print_char_cursor#64 ← print_char_cursor#12 -Coalesced [74] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [75] print_char_cursor#65 ← print_char_cursor#46 -Coalesced [79] print_char::ch#5 ← print_char::ch#2 -Coalesced (already) [80] print_char_cursor#66 ← print_char_cursor#12 -Coalesced [95] print_cls::sc#3 ← print_cls::sc#1 -Coalesced [111] sin16s_genb::x#4 ← sin16s_genb::x#1 -Coalesced [112] sin16s_genb::sintab#6 ← sin16s_genb::sintab#0 -Coalesced [113] sin16s_genb::i#4 ← sin16s_genb::i#1 -Coalesced [116] sin16sb::x#9 ← sin16sb::x#1 -Coalesced [120] sin16sb::x#11 ← sin16sb::x#2 -Coalesced [125] mulu16_sel::v1#18 ← mulu16_sel::v1#5 -Coalesced [126] mulu16_sel::v2#17 ← mulu16_sel::v2#5 -Coalesced [132] mulu16_sel::v1#19 ← mulu16_sel::v1#6 -Coalesced [133] mulu16_sel::v2#18 ← mulu16_sel::v2#6 -Coalesced [138] mulu16_sel::v1#20 ← mulu16_sel::v1#7 -Coalesced [145] mulu16_sel::v1#16 ← mulu16_sel::v1#8 -Coalesced [146] mulu16_sel::v2#15 ← mulu16_sel::v2#8 -Coalesced [152] mulu16_sel::v1#17 ← mulu16_sel::v1#9 -Coalesced [153] mulu16_sel::v2#16 ← mulu16_sel::v2#9 -Coalesced [161] sin16sb::return#6 ← sin16sb::sinx#1 -Coalesced [165] sin16sb::x#10 ← sin16sb::x#4 -Coalesced [166] sin16sb::x#8 ← sin16sb::x#0 -Coalesced [176] mul16u::a#7 ← mul16u::a#1 -Coalesced [177] mul16u::mb#6 ← mul16u::b#0 -Coalesced [185] mul16u::res#9 ← mul16u::res#1 -Coalesced [189] mul16u::a#8 ← mul16u::a#0 -Coalesced [190] mul16u::res#7 ← mul16u::res#6 -Coalesced [191] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [192] mul16u::res#8 ← mul16u::res#2 -Coalesced [198] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [205] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [206] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [213] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [220] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [221] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [227] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [228] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [229] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [230] divr16u::i#7 ← divr16u::i#1 -Coalesced [231] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [232] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [233] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [249] sin16s_gen::x#4 ← sin16s_gen::x#1 -Coalesced [250] sin16s_gen::sintab#6 ← sin16s_gen::sintab#0 -Coalesced [251] sin16s_gen::i#4 ← sin16s_gen::i#1 -Coalesced [254] sin16s::x#9 ← sin16s::x#1 -Coalesced [258] sin16s::x#11 ← sin16s::x#2 -Coalesced [264] mulu16_sel::v1#13 ← mulu16_sel::v1#0 -Coalesced [265] mulu16_sel::v2#13 ← mulu16_sel::v2#0 -Coalesced [271] mulu16_sel::v1#14 ← mulu16_sel::v1#1 -Coalesced [272] mulu16_sel::v2#14 ← mulu16_sel::v2#1 -Coalesced [277] mulu16_sel::v1#15 ← mulu16_sel::v1#2 -Coalesced [284] mulu16_sel::v1#11 ← mulu16_sel::v1#3 -Coalesced [285] mulu16_sel::v2#11 ← mulu16_sel::v2#3 -Coalesced [291] mulu16_sel::v1#12 ← mulu16_sel::v1#4 -Coalesced [292] mulu16_sel::v2#12 ← mulu16_sel::v2#4 -Coalesced [300] sin16s::return#6 ← sin16s::sinx#1 -Coalesced [304] sin16s::x#10 ← sin16s::x#4 -Coalesced [305] sin16s::x#8 ← sin16s::x#0 +Coalesced [47] print_char_cursor#63 ← print_char_cursor#1 +Coalesced [49] print_char_cursor#67 ← print_char_cursor#51 +Coalesced [51] print_sword::w#9 ← print_sword::w#1 +Coalesced (already) [57] print_char_cursor#66 ← print_char_cursor#51 +Coalesced [60] print_sword::w#8 ← print_sword::w#0 +Coalesced [66] print_byte::b#4 ← print_byte::b#0 +Coalesced [69] print_byte::b#5 ← print_byte::b#1 +Coalesced [76] print_char::ch#5 ← print_char::ch#2 +Coalesced (already) [77] print_char_cursor#64 ← print_char_cursor#13 +Coalesced [81] print_char::ch#6 ← print_char::ch#3 +Coalesced (already) [82] print_char_cursor#65 ← print_char_cursor#13 +Coalesced [93] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [109] sin16s_genb::x#4 ← sin16s_genb::x#1 +Coalesced [110] sin16s_genb::sintab#6 ← sin16s_genb::sintab#0 +Coalesced [111] sin16s_genb::i#4 ← sin16s_genb::i#1 +Coalesced [114] sin16sb::x#9 ← sin16sb::x#1 +Coalesced [118] sin16sb::x#11 ← sin16sb::x#2 +Coalesced [123] mulu16_sel::v1#18 ← mulu16_sel::v1#5 +Coalesced [124] mulu16_sel::v2#17 ← mulu16_sel::v2#5 +Coalesced [130] mulu16_sel::v1#19 ← mulu16_sel::v1#6 +Coalesced [131] mulu16_sel::v2#18 ← mulu16_sel::v2#6 +Coalesced [136] mulu16_sel::v1#20 ← mulu16_sel::v1#7 +Coalesced [143] mulu16_sel::v1#16 ← mulu16_sel::v1#8 +Coalesced [144] mulu16_sel::v2#15 ← mulu16_sel::v2#8 +Coalesced [150] mulu16_sel::v1#17 ← mulu16_sel::v1#9 +Coalesced [151] mulu16_sel::v2#16 ← mulu16_sel::v2#9 +Coalesced [159] sin16sb::return#6 ← sin16sb::sinx#1 +Coalesced [163] sin16sb::x#10 ← sin16sb::x#4 +Coalesced [164] sin16sb::x#8 ← sin16sb::x#0 +Coalesced [174] mul16u::a#7 ← mul16u::a#1 +Coalesced [175] mul16u::mb#6 ← mul16u::b#0 +Coalesced [183] mul16u::res#9 ← mul16u::res#1 +Coalesced [187] mul16u::a#8 ← mul16u::a#0 +Coalesced [188] mul16u::res#7 ← mul16u::res#6 +Coalesced [189] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [190] mul16u::res#8 ← mul16u::res#2 +Coalesced [196] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [203] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [204] divr16u::dividend#9 ← divr16u::dividend#5 +Coalesced [211] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [218] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [219] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [225] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [226] divr16u::dividend#10 ← divr16u::dividend#0 +Coalesced [227] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [228] divr16u::i#7 ← divr16u::i#1 +Coalesced [229] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [230] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [231] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [247] sin16s_gen::x#4 ← sin16s_gen::x#1 +Coalesced [248] sin16s_gen::sintab#6 ← sin16s_gen::sintab#0 +Coalesced [249] sin16s_gen::i#4 ← sin16s_gen::i#1 +Coalesced [252] sin16s::x#9 ← sin16s::x#1 +Coalesced [256] sin16s::x#11 ← sin16s::x#2 +Coalesced [262] mulu16_sel::v1#13 ← mulu16_sel::v1#0 +Coalesced [263] mulu16_sel::v2#13 ← mulu16_sel::v2#0 +Coalesced [269] mulu16_sel::v1#14 ← mulu16_sel::v1#1 +Coalesced [270] mulu16_sel::v2#14 ← mulu16_sel::v2#1 +Coalesced [275] mulu16_sel::v1#15 ← mulu16_sel::v1#2 +Coalesced [282] mulu16_sel::v1#11 ← mulu16_sel::v1#3 +Coalesced [283] mulu16_sel::v2#11 ← mulu16_sel::v2#3 +Coalesced [289] mulu16_sel::v1#12 ← mulu16_sel::v1#4 +Coalesced [290] mulu16_sel::v2#12 ← mulu16_sel::v2#4 +Coalesced [298] sin16s::return#6 ← sin16s::sinx#1 +Coalesced [302] sin16s::x#10 ← sin16s::x#4 +Coalesced [303] sin16s::x#8 ← sin16s::x#0 Coalesced down to 31 phi equivalence classes Culled Empty Block (label) @2 Culled Empty Block (label) @13 @@ -2457,8 +2479,8 @@ Culled Empty Block (label) main::@7 Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@11 Culled Empty Block (label) main::@12 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_cls::@2 @@ -2496,7 +2518,7 @@ Renumbering block sin16sb::@10 to sin16sb::@9 Renumbering block sin16sb::@11 to sin16sb::@10 Renumbering block sin16sb::@12 to sin16sb::@11 Renumbering block sin16sb::@15 to sin16sb::@12 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block main::@5 to main::@4 Renumbering block main::@6 to main::@5 Renumbering block main::@8 to main::@6 @@ -2509,7 +2531,8 @@ Adding NOP phi() at start of main::@4 Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@6 -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of print_cls Adding NOP phi() at start of sin16s_genb Adding NOP phi() at start of mul16u @@ -2540,7 +2563,7 @@ main::@5: scope:[main] from main::@4 to:main::@1 main::@1: scope:[main] from main::@5 main::@7 [10] (byte) main::i#2 ← phi( main::@5/(byte) 0 main::@7/(byte) main::i#1 ) - [10] (byte*) print_char_cursor#49 ← phi( main::@5/(const byte*) print_line_cursor#0 main::@7/(byte*) print_char_cursor#2 ) + [10] (byte*) print_char_cursor#52 ← phi( main::@5/(const byte*) print_line_cursor#0 main::@7/(byte*) print_char_cursor#2 ) [10] (signed word*) main::st2#2 ← phi( main::@5/(const signed word[$78]) main::sintab2#0 main::@7/(signed word*) main::st2#1 ) [10] (signed word*) main::st1#2 ← phi( main::@5/(const signed word[$78]) main::sintab1#0 main::@7/(signed word*) main::st1#1 ) [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) @@ -2551,7 +2574,7 @@ main::@3: scope:[main] from main::@1 [14] call print_str to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [15] (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#49 main::@3/(byte*) print_char_cursor#2 ) + [15] (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#52 main::@3/(byte*) print_char_cursor#2 ) [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [17] call print_sword to:main::@6 @@ -2569,11 +2592,11 @@ main::@return: scope:[main] from main::@7 [24] return to:@return print_str: scope:[print_str] from main::@3 main::@6 - [25] (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@6/(byte*) print_char_cursor#12 ) + [25] (byte*) print_char_cursor#54 ← phi( main::@3/(byte*) print_char_cursor#52 main::@6/(byte*) print_char_cursor#13 ) [25] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@6/(const string) main::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [26] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 ) + [26] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#54 print_str::@2/(byte*) print_char_cursor#1 ) [26] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -2586,359 +2609,361 @@ print_str::@2: scope:[print_str] from print_str::@1 [31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 to:print_str::@1 print_sword: scope:[print_sword] from main::@2 - [32] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [33] phi() [34] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [36] (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#48 print_sword::@3/(byte*) print_char_cursor#12 ) - [36] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [37] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [38] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [35] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [37] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [39] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [38] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [40] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [41] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [42] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [43] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [44] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [45] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 ) - [45] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [46] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [47] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [48] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [49] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [51] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [52] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2 - [53] (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#48 ) - [53] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [54] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 - [55] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 +print_sword::@1: scope:[print_sword] from print_sword + [39] phi() + [40] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [42] (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#51 print_sword::@3/(byte*) print_char_cursor#51 ) + [42] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 + [44] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [56] return + [45] return + to:@return +print_word: scope:[print_word] from print_sword::@2 + [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [47] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [49] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [50] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [51] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [54] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [57] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [58] return to:@return print_cls: scope:[print_cls] from main::@5 - [57] phi() + [59] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [58] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [59] *((byte*) print_cls::sc#2) ← (byte) ' ' - [60] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [61] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 + [60] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [61] *((byte*) print_cls::sc#2) ← (byte) ' ' + [62] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [63] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [62] return + [64] return to:@return sin16s_genb: scope:[sin16s_genb] from main::@4 - [63] phi() - [64] call div32u16u - [65] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 + [65] phi() + [66] call div32u16u + [67] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 to:sin16s_genb::@2 sin16s_genb::@2: scope:[sin16s_genb] from sin16s_genb - [66] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 + [68] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 to:sin16s_genb::@1 sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@2 sin16s_genb::@3 - [67] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(word) sin16s_genb::i#1 ) - [67] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@2/(const signed word[$78]) main::sintab2#0 sin16s_genb::@3/(signed word*) sin16s_genb::sintab#0 ) - [67] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(dword) sin16s_genb::x#1 ) - [68] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 - [69] call sin16sb - [70] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 + [69] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(word) sin16s_genb::i#1 ) + [69] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@2/(const signed word[$78]) main::sintab2#0 sin16s_genb::@3/(signed word*) sin16s_genb::sintab#0 ) + [69] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(dword) sin16s_genb::x#1 ) + [70] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 + [71] call sin16sb + [72] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 to:sin16s_genb::@3 sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb::@1 - [71] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 - [72] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 - [73] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD - [74] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 - [75] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 - [76] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 + [73] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 + [74] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 + [75] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [76] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 + [77] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 + [78] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 to:sin16s_genb::@return sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@3 - [77] return + [79] return to:@return sin16sb: scope:[sin16sb] from sin16s_genb::@1 - [78] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 + [80] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 to:sin16sb::@4 sin16sb::@4: scope:[sin16sb] from sin16sb - [79] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 + [81] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 to:sin16sb::@1 sin16sb::@1: scope:[sin16sb] from sin16sb sin16sb::@4 - [80] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte) 0 sin16sb::@4/(byte) 1 ) - [80] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 ) - [81] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 + [82] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte) 0 sin16sb::@4/(byte) 1 ) + [82] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 ) + [83] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 to:sin16sb::@5 sin16sb::@5: scope:[sin16sb] from sin16sb::@1 - [82] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 + [84] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 to:sin16sb::@2 sin16sb::@2: scope:[sin16sb] from sin16sb::@1 sin16sb::@5 - [83] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 ) - [84] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 - [85] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 - [86] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 - [87] call mulu16_sel - [88] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 + [85] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 ) + [86] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 + [87] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 + [88] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 + [89] call mulu16_sel + [90] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 to:sin16sb::@7 sin16sb::@7: scope:[sin16sb] from sin16sb::@2 - [89] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 - [90] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 - [91] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 - [92] call mulu16_sel - [93] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 + [91] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 + [92] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 + [93] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 + [94] call mulu16_sel + [95] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 to:sin16sb::@8 sin16sb::@8: scope:[sin16sb] from sin16sb::@7 - [94] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 - [95] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 - [96] call mulu16_sel - [97] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 + [96] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 + [97] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 + [98] call mulu16_sel + [99] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 to:sin16sb::@9 sin16sb::@9: scope:[sin16sb] from sin16sb::@8 - [98] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 - [99] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 - [100] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 - [101] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 - [102] call mulu16_sel - [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 + [100] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 + [101] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 + [102] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 + [103] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 + [104] call mulu16_sel + [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 to:sin16sb::@10 sin16sb::@10: scope:[sin16sb] from sin16sb::@9 - [104] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 - [105] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 - [106] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 - [107] call mulu16_sel - [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 + [106] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 + [107] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 + [108] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 + [109] call mulu16_sel + [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 to:sin16sb::@11 sin16sb::@11: scope:[sin16sb] from sin16sb::@10 - [109] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 - [110] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 - [111] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 - [112] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 + [111] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 + [112] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 + [113] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 + [114] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 to:sin16sb::@6 sin16sb::@6: scope:[sin16sb] from sin16sb::@11 - [113] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 + [115] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 to:sin16sb::@3 sin16sb::@3: scope:[sin16sb] from sin16sb::@12 sin16sb::@6 - [114] (signed word) sin16sb::return#1 ← phi( sin16sb::@12/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 ) + [116] (signed word) sin16sb::return#1 ← phi( sin16sb::@12/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 ) to:sin16sb::@return sin16sb::@return: scope:[sin16sb] from sin16sb::@3 - [115] return + [117] return to:@return sin16sb::@12: scope:[sin16sb] from sin16sb::@11 - [116] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 + [118] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 to:sin16sb::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 sin16sb::@10 sin16sb::@2 sin16sb::@7 sin16sb::@8 sin16sb::@9 - [117] (byte) mulu16_sel::select#10 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16sb::@9/(byte) 0 sin16sb::@10/(byte) 0 sin16sb::@2/(byte) 0 sin16sb::@7/(byte) 1 sin16sb::@8/(byte) 1 ) - [117] (word) mulu16_sel::v2#10 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16sb::@9/(word) mulu16_sel::v2#8 sin16sb::@10/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@7/(word) mulu16_sel::v2#6 sin16sb::@8/(word)(number) $10000/(number) 6 ) - [117] (word) mulu16_sel::v1#10 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16sb::@9/(word) mulu16_sel::v1#8 sin16sb::@10/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@7/(word) mulu16_sel::v1#6 sin16sb::@8/(word) mulu16_sel::v1#7 ) - [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 - [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 - [120] call mul16u - [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [119] (byte) mulu16_sel::select#10 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16sb::@9/(byte) 0 sin16sb::@10/(byte) 0 sin16sb::@2/(byte) 0 sin16sb::@7/(byte) 1 sin16sb::@8/(byte) 1 ) + [119] (word) mulu16_sel::v2#10 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16sb::@9/(word) mulu16_sel::v2#8 sin16sb::@10/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@7/(word) mulu16_sel::v2#6 sin16sb::@8/(word)(number) $10000/(number) 6 ) + [119] (word) mulu16_sel::v1#10 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16sb::@9/(word) mulu16_sel::v1#8 sin16sb::@10/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@7/(word) mulu16_sel::v1#6 sin16sb::@8/(word) mulu16_sel::v1#7 ) + [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 + [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 + [122] call mul16u + [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 - [124] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 + [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 + [126] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [125] return + [127] return to:@return mul16u: scope:[mul16u] from mulu16_sel - [126] phi() + [128] phi() to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [127] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 ) - [127] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [127] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 ) - [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 + [129] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 ) + [129] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [129] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 ) + [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [129] return + [131] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 - [131] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 + [133] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [133] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 - [135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [135] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [136] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 + [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 div32u16u: scope:[div32u16u] from sin16s_gen sin16s_genb - [136] phi() - [137] call divr16u - [138] (word) divr16u::return#2 ← (word) divr16u::return#0 + [138] phi() + [139] call divr16u + [140] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [140] (word) divr16u::rem#4 ← (word) rem16u#1 - [141] call divr16u - [142] (word) divr16u::return#3 ← (word) divr16u::return#0 + [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [142] (word) divr16u::rem#4 ← (word) rem16u#1 + [143] call divr16u + [144] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [145] return + [147] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [146] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) - [146] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [148] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) + [148] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [147] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [147] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [147] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [147] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [148] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [151] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [149] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [149] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [149] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [149] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [150] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [152] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [153] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [153] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [156] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 + [155] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [156] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [157] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [158] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [158] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 + [159] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [159] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [159] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [161] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [161] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [161] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [162] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [163] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [162] (word) rem16u#1 ← (word) divr16u::rem#11 + [164] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [163] return + [165] return to:@return sin16s_gen: scope:[sin16s_gen] from main - [164] phi() - [165] call div32u16u - [166] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + [166] phi() + [167] call div32u16u + [168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 to:sin16s_gen::@2 sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen - [167] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + [169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 to:sin16s_gen::@1 sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3 - [168] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 ) - [168] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 ) - [168] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 ) - [169] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 - [170] call sin16s - [171] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + [170] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 ) + [170] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 ) + [170] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 ) + [171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 + [172] call sin16s + [173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 to:sin16s_gen::@3 sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1 - [172] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - [173] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 - [174] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD - [175] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 - [176] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 - [177] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 + [174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + [175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 + [176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 + [178] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 + [179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 to:sin16s_gen::@return sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@3 - [178] return + [180] return to:@return sin16s: scope:[sin16s] from sin16s_gen::@1 - [179] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [180] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [181] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) - [181] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [182] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [183] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) + [183] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [183] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [184] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [185] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 - [186] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [187] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [188] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [189] call mulu16_sel - [190] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 + [186] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [187] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 + [188] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [191] call mulu16_sel + [192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [191] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [192] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [193] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [194] call mulu16_sel - [195] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 + [193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [196] call mulu16_sel + [197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [196] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [197] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [198] call mulu16_sel - [199] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 + [198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [200] call mulu16_sel + [201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [200] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 - [201] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [202] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [203] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [204] call mulu16_sel - [205] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 + [202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 + [203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [206] call mulu16_sel + [207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [206] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 - [207] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [208] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [209] call mulu16_sel - [210] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 + [208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 + [209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [211] call mulu16_sel + [212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [211] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 - [212] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 - [213] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [214] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 + [213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 + [214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 + [215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [216] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [215] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [216] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [218] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [217] return + [219] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [218] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 @@ -3068,19 +3093,17 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#2 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#1 4.0 (byte) print_char::ch#2 4.0 -(byte) print_char::ch#3 6.0 +(byte) print_char::ch#3 4.0 +(byte) print_char::ch#4 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#12 1.1176470588235294 +(byte*) print_char_cursor#13 0.7083333333333334 (byte*) print_char_cursor#2 32.7 -(byte*) print_char_cursor#33 5.0 -(byte*) print_char_cursor#43 2.0 -(byte*) print_char_cursor#46 2.0 -(byte*) print_char_cursor#48 6.5 -(byte*) print_char_cursor#49 8.25 -(byte*) print_char_cursor#51 24.0 +(byte*) print_char_cursor#35 6.0 +(byte*) print_char_cursor#51 5.200000000000001 +(byte*) print_char_cursor#52 8.25 +(byte*) print_char_cursor#54 24.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -3096,8 +3119,8 @@ VARIABLE REGISTER WEIGHTS (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w (signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 4.25 -(signed word) print_sword::w#3 4.0 +(signed word) print_sword::w#1 2.8333333333333335 +(signed word) print_sword::w#4 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 2.0 @@ -3203,10 +3226,10 @@ Initial phi equivalence classes [ main::st2#2 main::st2#1 ] [ main::i#2 main::i#1 ] [ print_str::str#3 print_str::str#5 print_str::str#0 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] [ print_cls::sc#2 print_cls::sc#1 ] [ sin16s_genb::x#2 sin16s_genb::x#1 ] [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] @@ -3290,10 +3313,10 @@ Complete equivalence classes [ main::st2#2 main::st2#1 ] [ main::i#2 main::i#1 ] [ print_str::str#3 print_str::str#5 print_str::str#0 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] [ print_cls::sc#2 print_cls::sc#1 ] [ sin16s_genb::x#2 sin16s_genb::x#1 ] [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] @@ -3376,10 +3399,10 @@ Allocated zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] Allocated zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] Allocated zp ZP_BYTE:6 [ main::i#2 main::i#1 ] Allocated zp ZP_WORD:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Allocated zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Allocated zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated zp ZP_BYTE:12 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Allocated zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] +Allocated zp ZP_WORD:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Allocated zp ZP_BYTE:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Allocated zp ZP_WORD:12 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] +Allocated zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_DWORD:17 [ sin16s_genb::x#2 sin16s_genb::x#1 ] Allocated zp ZP_WORD:21 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] @@ -3480,7 +3503,7 @@ INITIAL ASM .const PI_HALF_u4f12 = $1922 .label print_line_cursor = $400 .label rem16u = $90 - .label print_char_cursor = $d + .label print_char_cursor = $c //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -3505,7 +3528,7 @@ main: { .label st2 = 4 .label i = 6 //SEG11 [5] call sin16s_gen - //SEG12 [164] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG12 [166] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: jsr sin16s_gen //SEG13 [6] phi from main to main::@4 [phi:main->main::@4] @@ -3514,7 +3537,7 @@ main: { //SEG14 main::@4 b4: //SEG15 [7] call sin16s_genb - //SEG16 [63] phi from main::@4 to sin16s_genb [phi:main::@4->sin16s_genb] + //SEG16 [65] phi from main::@4 to sin16s_genb [phi:main::@4->sin16s_genb] sin16s_genb_from_b4: jsr sin16s_genb //SEG17 [8] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -3523,7 +3546,7 @@ main: { //SEG18 main::@5 b5: //SEG19 [9] call print_cls - //SEG20 [57] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG20 [59] phi from main::@5 to print_cls [phi:main::@5->print_cls] print_cls_from_b5: jsr print_cls //SEG21 [10] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -3531,7 +3554,7 @@ main: { //SEG22 [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG23 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) print_char_cursor#52 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#1] -- pbuz1=pbuc1 lda #print_line_cursor @@ -3550,7 +3573,7 @@ main: { //SEG26 [10] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: //SEG27 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy - //SEG28 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@7->main::@1#1] -- register_copy + //SEG28 [10] phi (byte*) print_char_cursor#52 = (byte*) print_char_cursor#2 [phi:main::@7->main::@1#1] -- register_copy //SEG29 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@7->main::@1#2] -- register_copy //SEG30 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@7->main::@1#3] -- register_copy jmp b1 @@ -3577,7 +3600,7 @@ main: { //SEG36 [14] call print_str //SEG37 [25] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG38 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG38 [25] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#52 [phi:main::@3->print_str#0] -- register_copy //SEG39 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #main::@2] b2_from_b1: b2_from_b3: - //SEG41 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG41 [15] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 //SEG42 main::@2 b2: @@ -3606,7 +3629,7 @@ main: { //SEG47 [19] call print_str //SEG48 [25] phi from main::@6 to print_str [phi:main::@6->print_str] print_str_from_b6: - //SEG49 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@6->print_str#0] -- register_copy + //SEG49 [25] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#13 [phi:main::@6->print_str#0] -- register_copy //SEG50 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str::@1] b1_from_print_str: b1_from_b2: - //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#54 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG61 [26] 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 //SEG62 print_str::@1 @@ -3695,26 +3718,58 @@ print_str: { // print_sword(signed word zeropage(9) w) print_sword: { .label w = 9 - //SEG71 [32] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG71 [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG72 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG73 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG72 [33] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG73 print_sword::@3 + b3: //SEG74 [34] call print_char - //SEG75 [53] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG76 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG77 [53] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG75 [42] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG76 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG77 [42] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG78 [35] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG79 [35] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG80 print_sword::@2 + b2: + //SEG81 [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG82 [37] call print_word + jsr print_word + jmp breturn + //SEG83 print_sword::@return + breturn: + //SEG84 [38] return + rts + //SEG85 [39] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG86 print_sword::@1 + b1: + //SEG87 [40] call print_char + //SEG88 [42] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG89 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG90 [42] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG78 print_sword::@3 - b3: - //SEG79 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG91 print_sword::@4 + b4: + //SEG92 [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -3722,154 +3777,133 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG80 [36] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG81 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG82 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG83 print_sword::@1 - b1: - //SEG84 [37] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG85 [38] call print_word - jsr print_word + jmp b2_from_b4 +} +//SEG93 print_char +// Print a single char +// print_char(byte zeropage($b) ch) +print_char: { + .label ch = $b + //SEG94 [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + lda ch + ldy #0 + sta (print_char_cursor),y + //SEG95 [44] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: jmp breturn - //SEG86 print_sword::@return + //SEG96 print_char::@return breturn: - //SEG87 [39] return + //SEG97 [45] return rts } -//SEG88 print_word +//SEG98 print_word // Print a word as HEX // print_word(word zeropage($47) w) print_word: { .label w = $47 - //SEG89 [40] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG99 [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG90 [41] call print_byte - //SEG91 [45] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG100 [47] call print_byte + //SEG101 [51] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG92 [45] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG93 [45] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG102 [51] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte jmp b1 - //SEG94 print_word::@1 + //SEG103 print_word::@1 b1: - //SEG95 [42] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG104 [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG96 [43] call print_byte - //SEG97 [45] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG105 [49] call print_byte + //SEG106 [51] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG98 [45] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG99 [45] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG107 [51] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte jmp breturn - //SEG100 print_word::@return + //SEG108 print_word::@return breturn: - //SEG101 [44] return + //SEG109 [50] return rts } -//SEG102 print_byte +//SEG110 print_byte // Print a byte as HEX -// print_byte(byte zeropage($b) b) +// print_byte(byte zeropage($e) b) print_byte: { .label _0 = $49 .label _2 = $4a - .label b = $b - //SEG103 [46] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + .label b = $e + //SEG111 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG104 [47] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG112 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG105 [48] call print_char - //SEG106 [53] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG113 [54] call print_char + //SEG114 [42] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG107 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG108 [53] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG115 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG116 [42] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG109 print_byte::@1 + //SEG117 print_byte::@1 b1: - //SEG110 [49] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG118 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG111 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG119 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG112 [51] call print_char - //SEG113 [53] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG120 [57] call print_char + //SEG121 [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG114 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG115 [53] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG122 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG123 [42] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG116 print_byte::@return + //SEG124 print_byte::@return breturn: - //SEG117 [52] return + //SEG125 [58] return rts } -//SEG118 print_char -// Print a single char -// print_char(byte zeropage($c) ch) -print_char: { - .label ch = $c - //SEG119 [54] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuz2 - lda ch - ldy #0 - sta (print_char_cursor),y - //SEG120 [55] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - jmp breturn - //SEG121 print_char::@return - breturn: - //SEG122 [56] return - rts -} -//SEG123 print_cls +//SEG126 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $f - //SEG124 [58] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG127 [60] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG125 [58] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG128 [60] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG126 [58] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG129 [60] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG127 [58] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG130 [60] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG128 print_cls::@1 + //SEG131 print_cls::@1 b1: - //SEG129 [59] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG132 [61] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG130 [60] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG133 [62] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG131 [61] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG134 [63] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1_from_b1 @@ -3877,12 +3911,12 @@ print_cls: { cmp #div32u16u] + //SEG138 [66] call div32u16u + //SEG139 [138] phi from sin16s_genb to div32u16u [phi:sin16s_genb->div32u16u] div32u16u_from_sin16s_genb: jsr div32u16u - //SEG137 [65] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG140 [67] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_3 lda div32u16u.return+1 @@ -3907,9 +3941,9 @@ sin16s_genb: { lda div32u16u.return+3 sta div32u16u.return_3+3 jmp b2 - //SEG138 sin16s_genb::@2 + //SEG141 sin16s_genb::@2 b2: - //SEG139 [66] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 -- vduz1=vduz2 + //SEG142 [68] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 -- vduz1=vduz2 lda div32u16u.return_3 sta step lda div32u16u.return_3+1 @@ -3918,19 +3952,19 @@ sin16s_genb: { sta step+2 lda div32u16u.return_3+3 sta step+3 - //SEG140 [67] phi from sin16s_genb::@2 to sin16s_genb::@1 [phi:sin16s_genb::@2->sin16s_genb::@1] + //SEG143 [69] phi from sin16s_genb::@2 to sin16s_genb::@1 [phi:sin16s_genb::@2->sin16s_genb::@1] b1_from_b2: - //SEG141 [67] phi (word) sin16s_genb::i#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#0] -- vwuz1=vbuc1 + //SEG144 [69] phi (word) sin16s_genb::i#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG142 [67] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[$78]) main::sintab2#0 [phi:sin16s_genb::@2->sin16s_genb::@1#1] -- pwsz1=pwsc1 + //SEG145 [69] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[$78]) main::sintab2#0 [phi:sin16s_genb::@2->sin16s_genb::@1#1] -- pwsz1=pwsc1 lda #main.sintab2 sta sintab+1 - //SEG143 [67] phi (dword) sin16s_genb::x#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#2] -- vduz1=vbuc1 + //SEG146 [69] phi (dword) sin16s_genb::x#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -3939,42 +3973,42 @@ sin16s_genb: { sta x+3 jmp b1 // u[4.28] - //SEG144 [67] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] + //SEG147 [69] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] b1_from_b3: - //SEG145 [67] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- register_copy - //SEG146 [67] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- register_copy - //SEG147 [67] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- register_copy + //SEG148 [69] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- register_copy + //SEG149 [69] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- register_copy + //SEG150 [69] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- register_copy jmp b1 - //SEG148 sin16s_genb::@1 + //SEG151 sin16s_genb::@1 b1: - //SEG149 [68] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 + //SEG152 [70] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 lda x+2 sta sin16sb.x lda x+3 sta sin16sb.x+1 - //SEG150 [69] call sin16sb + //SEG153 [71] call sin16sb jsr sin16sb - //SEG151 [70] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 -- vwsz1=vwsz2 + //SEG154 [72] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 -- vwsz1=vwsz2 lda sin16sb.return_1 sta sin16sb.return lda sin16sb.return_1+1 sta sin16sb.return+1 jmp b3 - //SEG152 sin16s_genb::@3 + //SEG155 sin16s_genb::@3 b3: - //SEG153 [71] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 -- vwsz1=vwsz2 + //SEG156 [73] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 -- vwsz1=vwsz2 lda sin16sb.return sta _2 lda sin16sb.return+1 sta _2+1 - //SEG154 [72] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 + //SEG157 [74] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 ldy #0 lda _2 sta (sintab),y iny lda _2+1 sta (sintab),y - //SEG155 [73] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG158 [75] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -3982,7 +4016,7 @@ sin16s_genb: { bcc !+ inc sintab+1 !: - //SEG156 [74] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG159 [76] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -3996,12 +4030,12 @@ sin16s_genb: { lda x+3 adc step+3 sta x+3 - //SEG157 [75] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 + //SEG160 [77] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG158 [76] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG161 [78] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b3 @@ -4011,12 +4045,12 @@ sin16s_genb: { bcc b1_from_b3 !: jmp breturn - //SEG159 sin16s_genb::@return + //SEG162 sin16s_genb::@return breturn: - //SEG160 [77] return + //SEG163 [79] return rts } -//SEG161 sin16sb +//SEG164 sin16sb // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -4037,7 +4071,7 @@ sin16sb: { .label sinx = $1c .label isUpper = $19 .label return_5 = $1c - //SEG162 [78] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG165 [80] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin16sb @@ -4047,9 +4081,9 @@ sin16sb: { bcc b1_from_sin16sb !: jmp b4 - //SEG163 sin16sb::@4 + //SEG166 sin16sb::@4 b4: - //SEG164 [79] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG167 [81] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG165 [80] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] + //SEG168 [82] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] b1_from_b4: - //SEG166 [80] phi (byte) sin16sb::isUpper#2 = (byte) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuz1=vbuc1 + //SEG169 [82] phi (byte) sin16sb::isUpper#2 = (byte) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG167 [80] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy + //SEG170 [82] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy jmp b1 - //SEG168 [80] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] + //SEG171 [82] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] b1_from_sin16sb: - //SEG169 [80] phi (byte) sin16sb::isUpper#2 = (byte) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuz1=vbuc1 + //SEG172 [82] phi (byte) sin16sb::isUpper#2 = (byte) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG170 [80] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy + //SEG173 [82] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy jmp b1 - //SEG171 sin16sb::@1 + //SEG174 sin16sb::@1 b1: - //SEG172 [81] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG175 [83] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -4083,9 +4117,9 @@ sin16sb: { bcc b2_from_b1 !: jmp b5 - //SEG173 sin16sb::@5 + //SEG176 sin16sb::@5 b5: - //SEG174 [82] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG177 [84] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG175 [83] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] + //SEG178 [85] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] b2_from_b1: b2_from_b5: - //SEG176 [83] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy + //SEG179 [85] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy jmp b2 - //SEG177 sin16sb::@2 + //SEG180 sin16sb::@2 b2: - //SEG178 [84] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 -- vwuz1=vwuz2_rol_3 + //SEG181 [86] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda x asl sta x1 @@ -4111,102 +4145,102 @@ sin16sb: { rol x1+1 asl x1 rol x1+1 - //SEG179 [85] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG182 [87] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG180 [86] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG183 [88] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG181 [87] call mulu16_sel - //SEG182 [117] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] + //SEG184 [89] call mulu16_sel + //SEG185 [119] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG183 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG186 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG184 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy - //SEG185 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy + //SEG187 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy + //SEG188 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG186 [88] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG189 [90] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_18 lda mulu16_sel.return_17+1 sta mulu16_sel.return_18+1 jmp b7 - //SEG187 sin16sb::@7 + //SEG190 sin16sb::@7 b7: - //SEG188 [89] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 + //SEG191 [91] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 lda mulu16_sel.return_18 sta x2 lda mulu16_sel.return_18+1 sta x2+1 - //SEG189 [90] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 -- vwuz1=vwuz2 + //SEG192 [92] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 -- vwuz1=vwuz2 lda x2 sta mulu16_sel.v1 lda x2+1 sta mulu16_sel.v1+1 - //SEG190 [91] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG193 [93] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG191 [92] call mulu16_sel - //SEG192 [117] phi from sin16sb::@7 to mulu16_sel [phi:sin16sb::@7->mulu16_sel] + //SEG194 [94] call mulu16_sel + //SEG195 [119] phi from sin16sb::@7 to mulu16_sel [phi:sin16sb::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG193 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@7->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG196 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@7->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG194 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@7->mulu16_sel#1] -- register_copy - //SEG195 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@7->mulu16_sel#2] -- register_copy + //SEG197 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@7->mulu16_sel#1] -- register_copy + //SEG198 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG196 [93] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG199 [95] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_19 lda mulu16_sel.return_17+1 sta mulu16_sel.return_19+1 jmp b8 - //SEG197 sin16sb::@8 + //SEG200 sin16sb::@8 b8: - //SEG198 [94] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 -- vwuz1=vwuz2 + //SEG201 [96] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 -- vwuz1=vwuz2 lda mulu16_sel.return_19 sta x3 lda mulu16_sel.return_19+1 sta x3+1 - //SEG199 [95] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 -- vwuz1=vwuz2 + //SEG202 [97] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG200 [96] call mulu16_sel - //SEG201 [117] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] + //SEG203 [98] call mulu16_sel + //SEG204 [119] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG202 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG205 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG203 [117] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16sb::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG206 [119] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16sb::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG204 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy + //SEG207 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG205 [97] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG208 [99] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_20 lda mulu16_sel.return_17+1 sta mulu16_sel.return_20+1 jmp b9 - //SEG206 sin16sb::@9 + //SEG209 sin16sb::@9 b9: - //SEG207 [98] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 -- vwuz1=vwuz2 + //SEG210 [100] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 -- vwuz1=vwuz2 lda mulu16_sel.return_20 sta x3_6 lda mulu16_sel.return_20+1 sta x3_6+1 - //SEG208 [99] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG211 [101] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4214,71 +4248,71 @@ sin16sb: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG209 [100] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 -- vwuz1=vwuz2 + //SEG212 [102] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG210 [101] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG213 [103] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG211 [102] call mulu16_sel - //SEG212 [117] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] + //SEG214 [104] call mulu16_sel + //SEG215 [119] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG213 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG216 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG214 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@9->mulu16_sel#1] -- register_copy - //SEG215 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy + //SEG217 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@9->mulu16_sel#1] -- register_copy + //SEG218 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG216 [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG219 [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_10 lda mulu16_sel.return_17+1 sta mulu16_sel.return_10+1 jmp b10 - //SEG217 sin16sb::@10 + //SEG220 sin16sb::@10 b10: - //SEG218 [104] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG221 [106] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 lda mulu16_sel.return_10 sta x4 lda mulu16_sel.return_10+1 sta x4+1 - //SEG219 [105] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 -- vwuz1=vwuz2 + //SEG222 [107] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 -- vwuz1=vwuz2 lda x4 sta mulu16_sel.v1 lda x4+1 sta mulu16_sel.v1+1 - //SEG220 [106] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG223 [108] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG221 [107] call mulu16_sel - //SEG222 [117] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] + //SEG224 [109] call mulu16_sel + //SEG225 [119] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG223 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG226 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG224 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy - //SEG225 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy + //SEG227 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy + //SEG228 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG226 [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG229 [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_11 lda mulu16_sel.return_17+1 sta mulu16_sel.return_11+1 jmp b11 - //SEG227 sin16sb::@11 + //SEG230 sin16sb::@11 b11: - //SEG228 [109] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG231 [111] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 lda mulu16_sel.return_11 sta x5 lda mulu16_sel.return_11+1 sta x5+1 - //SEG229 [110] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 + //SEG232 [112] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 lda x5+1 lsr sta x5_128+1 @@ -4291,7 +4325,7 @@ sin16sb: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG230 [111] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG233 [113] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -4299,14 +4333,14 @@ sin16sb: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG231 [112] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 -- vbuz1_eq_0_then_la1 + //SEG234 [114] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG232 sin16sb::@6 + //SEG235 sin16sb::@6 b6: - //SEG233 [113] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG236 [115] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz2 sec lda #0 sbc usinx_1 @@ -4314,28 +4348,28 @@ sin16sb: { lda #0 sbc usinx_1+1 sta sinx+1 - //SEG234 [114] phi from sin16sb::@12 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3] + //SEG237 [116] phi from sin16sb::@12 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3] b3_from_b12: b3_from_b6: - //SEG235 [114] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3#0] -- register_copy + //SEG238 [116] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3#0] -- register_copy jmp b3 - //SEG236 sin16sb::@3 + //SEG239 sin16sb::@3 b3: jmp breturn - //SEG237 sin16sb::@return + //SEG240 sin16sb::@return breturn: - //SEG238 [115] return + //SEG241 [117] return rts - //SEG239 sin16sb::@12 + //SEG242 sin16sb::@12 b12: - //SEG240 [116] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 -- vwsz1=vwsz2 + //SEG243 [118] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 sta return_5+1 jmp b3_from_b12 } -//SEG241 mulu16_sel +//SEG244 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($1e) v1, word zeropage($20) v2, byte zeropage($22) select) @@ -4356,21 +4390,21 @@ mulu16_sel: { .label return_18 = $59 .label return_19 = $5d .label return_20 = $61 - //SEG242 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 + //SEG245 [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG243 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 -- vwuz1=vwuz2 + //SEG246 [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG244 [120] call mul16u - //SEG245 [126] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG247 [122] call mul16u + //SEG248 [128] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: jsr mul16u - //SEG246 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG249 [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -4380,9 +4414,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return+3 jmp b1 - //SEG247 mulu16_sel::@1 + //SEG250 mulu16_sel::@1 b1: - //SEG248 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG251 [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta _0 lda mul16u.return+1 @@ -4391,7 +4425,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return+3 sta _0+3 - //SEG249 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz2_rol_vbuz3 + //SEG252 [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -4410,18 +4444,18 @@ mulu16_sel: { dex bne !- !e: - //SEG250 [124] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG253 [126] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_17 lda _1+3 sta return_17+1 jmp breturn - //SEG251 mulu16_sel::@return + //SEG254 mulu16_sel::@return breturn: - //SEG252 [125] return + //SEG255 [127] return rts } -//SEG253 mul16u +//SEG256 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($23) a, word zeropage($2d) b) mul16u: { @@ -4431,9 +4465,9 @@ mul16u: { .label res = $25 .label b = $2d .label return = $73 - //SEG254 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG257 [129] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG255 [127] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 + //SEG258 [129] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 lda b sta mb lda b+1 @@ -4441,41 +4475,41 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG256 [127] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG259 [129] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG257 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG260 [129] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG258 mul16u::@1 + //SEG261 mul16u::@1 b1: - //SEG259 [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG262 [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG260 mul16u::@return + //SEG263 mul16u::@return breturn: - //SEG261 [129] return + //SEG264 [131] return rts - //SEG262 mul16u::@2 + //SEG265 mul16u::@2 b2: - //SEG263 [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG266 [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG264 [131] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 + //SEG267 [133] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG265 mul16u::@4 + //SEG268 mul16u::@4 b4: - //SEG266 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG269 [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4489,29 +4523,29 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG267 [133] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG270 [135] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG268 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG271 [135] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG269 mul16u::@3 + //SEG272 mul16u::@3 b3: - //SEG270 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG273 [136] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG271 [135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG274 [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG272 [127] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG275 [129] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG273 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG274 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG275 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG276 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG277 [129] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG278 [129] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG276 div32u16u +//SEG279 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { @@ -4520,62 +4554,62 @@ div32u16u: { .label return = $8a .label return_2 = $92 .label return_3 = $4b - //SEG277 [137] call divr16u - //SEG278 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG280 [139] call divr16u + //SEG281 [148] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG279 [146] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG282 [148] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG280 [146] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG283 [148] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG281 [138] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG284 [140] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b1 - //SEG282 div32u16u::@1 + //SEG285 div32u16u::@1 b1: - //SEG283 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG286 [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta quotient_hi lda divr16u.return_2+1 sta quotient_hi+1 - //SEG284 [140] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG287 [142] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG285 [141] call divr16u - //SEG286 [146] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG288 [143] call divr16u + //SEG289 [148] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from_b1: - //SEG287 [146] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG290 [148] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG288 [146] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG291 [148] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG289 [142] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG292 [144] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b2 - //SEG290 div32u16u::@2 + //SEG293 div32u16u::@2 b2: - //SEG291 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG294 [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta quotient_lo lda divr16u.return_3+1 sta quotient_lo+1 - //SEG292 [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG295 [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -4585,12 +4619,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG293 div32u16u::@return + //SEG296 div32u16u::@return breturn: - //SEG294 [145] return + //SEG297 [147] return rts } -//SEG295 divr16u +//SEG298 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -4606,63 +4640,63 @@ divr16u: { .label return = $33 .label return_2 = $82 .label return_3 = $86 - //SEG296 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG299 [149] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG297 [147] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG300 [149] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG298 [147] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG301 [149] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG299 [147] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG300 [147] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG302 [149] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG303 [149] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG301 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG304 [149] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG302 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG303 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG304 [147] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG305 [147] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG305 [149] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG306 [149] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG307 [149] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG308 [149] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG306 divr16u::@1 + //SEG309 divr16u::@1 b1: - //SEG307 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG310 [150] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG308 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG311 [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG309 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG312 [152] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG310 [151] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG313 [153] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG311 divr16u::@4 + //SEG314 divr16u::@4 b4: - //SEG312 [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG315 [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG313 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG316 [155] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG314 [153] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG317 [155] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG315 divr16u::@2 + //SEG318 divr16u::@2 b2: - //SEG316 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG319 [156] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG317 [155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG320 [157] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG318 [156] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG321 [158] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -4672,14 +4706,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG319 divr16u::@5 + //SEG322 divr16u::@5 b5: - //SEG320 [157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG323 [159] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG321 [158] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG324 [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG322 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG325 [161] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG323 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG324 [159] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG326 [161] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG327 [161] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG325 divr16u::@3 + //SEG328 divr16u::@3 b3: - //SEG326 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG329 [162] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG327 [161] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG330 [163] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b3 jmp b6 - //SEG328 divr16u::@6 + //SEG331 divr16u::@6 b6: - //SEG329 [162] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG332 [164] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG330 divr16u::@return + //SEG333 divr16u::@return breturn: - //SEG331 [163] return + //SEG334 [165] return rts } -//SEG332 sin16s_gen +//SEG335 sin16s_gen // Generate signed (large) word sinus table - on the full -$7fff - $7fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -4726,11 +4760,11 @@ sin16s_gen: { .label sintab = $3a .label x = $36 .label i = $3c - //SEG333 [165] call div32u16u - //SEG334 [136] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] + //SEG336 [167] call div32u16u + //SEG337 [138] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG335 [166] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG338 [168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -4740,9 +4774,9 @@ sin16s_gen: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b2 - //SEG336 sin16s_gen::@2 + //SEG339 sin16s_gen::@2 b2: - //SEG337 [167] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG340 [169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -4751,19 +4785,19 @@ sin16s_gen: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG338 [168] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] + //SEG341 [170] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] b1_from_b2: - //SEG339 [168] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG342 [170] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG340 [168] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG343 [170] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG341 [168] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG344 [170] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -4772,15 +4806,15 @@ sin16s_gen: { sta x+3 jmp b1 // u[4.28] - //SEG342 [168] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG345 [170] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG343 [168] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy - //SEG344 [168] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy - //SEG345 [168] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy + //SEG346 [170] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy + //SEG347 [170] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy + //SEG348 [170] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG346 sin16s_gen::@1 + //SEG349 sin16s_gen::@1 b1: - //SEG347 [169] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG350 [171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -4789,29 +4823,29 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG348 [170] call sin16s + //SEG351 [172] call sin16s jsr sin16s - //SEG349 [171] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG352 [173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b3 - //SEG350 sin16s_gen::@3 + //SEG353 sin16s_gen::@3 b3: - //SEG351 [172] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG354 [174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta _1 lda sin16s.return+1 sta _1+1 - //SEG352 [173] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG355 [175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG353 [174] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG356 [176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -4819,7 +4853,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG354 [175] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG357 [177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4833,12 +4867,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG355 [176] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG358 [178] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG356 [177] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG359 [179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b3 @@ -4848,12 +4882,12 @@ sin16s_gen: { bcc b1_from_b3 !: jmp breturn - //SEG357 sin16s_gen::@return + //SEG360 sin16s_gen::@return breturn: - //SEG358 [178] return + //SEG361 [180] return rts } -//SEG359 sin16s +//SEG362 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -4875,7 +4909,7 @@ sin16s: { .label sinx = $43 .label isUpper = $3e .label return_5 = $43 - //SEG360 [179] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG363 [181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -4893,9 +4927,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG361 sin16s::@4 + //SEG364 sin16s::@4 b4: - //SEG362 [180] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG365 [182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG363 [181] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG366 [183] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG364 [181] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG367 [183] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG365 [181] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG368 [183] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG366 [181] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG369 [183] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG367 [181] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG370 [183] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG368 [181] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG371 [183] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG369 sin16s::@1 + //SEG372 sin16s::@1 b1: - //SEG370 [182] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG373 [184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -4943,9 +4977,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG371 sin16s::@5 + //SEG374 sin16s::@5 b5: - //SEG372 [183] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG375 [185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG373 [184] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG376 [186] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG374 [184] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG377 [186] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG375 sin16s::@2 + //SEG378 sin16s::@2 b2: - //SEG376 [185] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 + //SEG379 [187] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 lda x sta _4 lda x+1 @@ -4983,107 +5017,107 @@ sin16s: { rol _4+3 dey bne !- - //SEG377 [186] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG380 [188] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG378 [187] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG381 [189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG379 [188] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG382 [190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG380 [189] call mulu16_sel - //SEG381 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG383 [191] call mulu16_sel + //SEG384 [119] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG382 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG385 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG383 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG384 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG386 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG387 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG385 [190] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG388 [192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b7 - //SEG386 sin16s::@7 + //SEG389 sin16s::@7 b7: - //SEG387 [191] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG390 [193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG388 [192] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG391 [194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 lda x2 sta mulu16_sel.v1 lda x2+1 sta mulu16_sel.v1+1 - //SEG389 [193] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG392 [195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG390 [194] call mulu16_sel - //SEG391 [117] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG393 [196] call mulu16_sel + //SEG394 [119] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG392 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG395 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG393 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG394 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG396 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG397 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG395 [195] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG398 [197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_1 lda mulu16_sel.return_17+1 sta mulu16_sel.return_1+1 jmp b8 - //SEG396 sin16s::@8 + //SEG399 sin16s::@8 b8: - //SEG397 [196] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG400 [198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 lda mulu16_sel.return_1 sta x3 lda mulu16_sel.return_1+1 sta x3+1 - //SEG398 [197] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG401 [199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG399 [198] call mulu16_sel - //SEG400 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG402 [200] call mulu16_sel + //SEG403 [119] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG401 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG404 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG402 [117] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG405 [119] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG403 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG406 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG404 [199] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG407 [201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_14 lda mulu16_sel.return_17+1 sta mulu16_sel.return_14+1 jmp b9 - //SEG405 sin16s::@9 + //SEG408 sin16s::@9 b9: - //SEG406 [200] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 -- vwuz1=vwuz2 + //SEG409 [202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 -- vwuz1=vwuz2 lda mulu16_sel.return_14 sta x3_6 lda mulu16_sel.return_14+1 sta x3_6+1 - //SEG407 [201] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG410 [203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -5091,71 +5125,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG408 [202] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG411 [204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG409 [203] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG412 [205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG410 [204] call mulu16_sel - //SEG411 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG413 [206] call mulu16_sel + //SEG414 [119] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG412 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG415 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG413 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG414 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG416 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG417 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG415 [205] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG418 [207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_15 lda mulu16_sel.return_17+1 sta mulu16_sel.return_15+1 jmp b10 - //SEG416 sin16s::@10 + //SEG419 sin16s::@10 b10: - //SEG417 [206] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 -- vwuz1=vwuz2 + //SEG420 [208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 -- vwuz1=vwuz2 lda mulu16_sel.return_15 sta x4 lda mulu16_sel.return_15+1 sta x4+1 - //SEG418 [207] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG421 [209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 lda x4 sta mulu16_sel.v1 lda x4+1 sta mulu16_sel.v1+1 - //SEG419 [208] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG422 [210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG420 [209] call mulu16_sel - //SEG421 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG423 [211] call mulu16_sel + //SEG424 [119] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG422 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG425 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG423 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG424 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG426 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG427 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG425 [210] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG428 [212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return_16 lda mulu16_sel.return_17+1 sta mulu16_sel.return_16+1 jmp b11 - //SEG426 sin16s::@11 + //SEG429 sin16s::@11 b11: - //SEG427 [211] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 -- vwuz1=vwuz2 + //SEG430 [213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 -- vwuz1=vwuz2 lda mulu16_sel.return_16 sta x5 lda mulu16_sel.return_16+1 sta x5+1 - //SEG428 [212] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 + //SEG431 [214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 lda x5+1 lsr sta x5_128+1 @@ -5168,7 +5202,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG429 [213] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG432 [215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -5176,14 +5210,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG430 [214] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG433 [216] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG431 sin16s::@6 + //SEG434 sin16s::@6 b6: - //SEG432 [215] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG435 [217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda #0 sbc usinx_1 @@ -5191,276 +5225,276 @@ sin16s: { lda #0 sbc usinx_1+1 sta sinx+1 - //SEG433 [216] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG436 [218] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] b3_from_b12: b3_from_b6: - //SEG434 [216] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG437 [218] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG435 sin16s::@3 + //SEG438 sin16s::@3 b3: jmp breturn - //SEG436 sin16s::@return + //SEG439 sin16s::@return breturn: - //SEG437 [217] return + //SEG440 [219] return rts - //SEG438 sin16s::@12 + //SEG441 sin16s::@12 b12: - //SEG439 [218] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG442 [220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 sta return_5+1 jmp b3_from_b12 } -//SEG440 File Data +//SEG443 File Data print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a reg byte y +Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a -Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a +Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ) always clobbers reg byte a +Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [32] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a -Statement [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [37] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_char_cursor#43 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#43 print_word::w#0 ] ) always clobbers reg byte a -Statement [40] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#43 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:17::print_word:38 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#43 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [42] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:17::print_word:38 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [46] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ( main:2::print_sword:17::print_word:38::print_byte:41 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] main:2::print_sword:17::print_word:38::print_byte:43 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [49] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:17::print_word:38::print_byte:41 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:17::print_word:38::print_byte:43 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [54] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 [ print_char_cursor#33 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#33 ] main:2::print_sword:17::print_word:38::print_byte:41::print_char:48 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:17::print_word:38::print_byte:43::print_char:48 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:17::print_word:38::print_byte:41::print_char:51 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#33 ] main:2::print_sword:17::print_word:38::print_byte:43::print_char:51 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#33 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [59] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [61] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [65] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] ) always clobbers reg byte a -Statement [66] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] ) always clobbers reg byte a -Statement [68] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a -Statement [70] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ) always clobbers reg byte a -Statement [71] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ) always clobbers reg byte a -Statement [72] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ) always clobbers reg byte a reg byte y -Statement [73] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a -Statement [74] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a -Statement [76] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ) always clobbers reg byte a -Statement [78] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a -Statement [79] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#1 ] ) always clobbers reg byte a -Statement [81] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] ) always clobbers reg byte a +Statement [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a +Statement [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_char:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:47::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:49::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:47::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:49::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#35 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [61] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [63] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [67] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] ) always clobbers reg byte a +Statement [68] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] ) always clobbers reg byte a +Statement [70] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a +Statement [72] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ) always clobbers reg byte a +Statement [73] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ) always clobbers reg byte a +Statement [74] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ) always clobbers reg byte a reg byte y +Statement [75] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a +Statement [76] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a +Statement [78] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ) always clobbers reg byte a +Statement [80] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a +Statement [81] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#1 ] ) always clobbers reg byte a +Statement [83] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ sin16sb::isUpper#2 ] -Statement [82] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x#2 ] ) always clobbers reg byte a -Statement [84] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 ] ) always clobbers reg byte a -Statement [85] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ) always clobbers reg byte a -Statement [86] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ) always clobbers reg byte a -Statement [88] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ) always clobbers reg byte a -Statement [89] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ) always clobbers reg byte a -Statement [91] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ) always clobbers reg byte a -Statement [93] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ) always clobbers reg byte a -Statement [94] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ) always clobbers reg byte a -Statement [95] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ) always clobbers reg byte a -Statement [97] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ) always clobbers reg byte a -Statement [98] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ) always clobbers reg byte a -Statement [99] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ) always clobbers reg byte a -Statement [100] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ) always clobbers reg byte a -Statement [101] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ) always clobbers reg byte a -Statement [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [104] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ) always clobbers reg byte a -Statement [106] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ) always clobbers reg byte a -Statement [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [109] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ) always clobbers reg byte a -Statement [110] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ) always clobbers reg byte a -Statement [111] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] ) always clobbers reg byte a -Statement [113] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::sinx#1 ] ) always clobbers reg byte a -Statement [116] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#5 ] ) always clobbers reg byte a -Statement [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ) always clobbers reg byte a +Statement [84] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x#2 ] ) always clobbers reg byte a +Statement [86] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 ] ) always clobbers reg byte a +Statement [87] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ) always clobbers reg byte a +Statement [88] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ) always clobbers reg byte a +Statement [91] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ) always clobbers reg byte a +Statement [92] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ) always clobbers reg byte a +Statement [95] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ) always clobbers reg byte a +Statement [96] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ) always clobbers reg byte a +Statement [97] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ) always clobbers reg byte a +Statement [99] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ) always clobbers reg byte a +Statement [100] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ) always clobbers reg byte a +Statement [101] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ) always clobbers reg byte a +Statement [103] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [106] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ) always clobbers reg byte a +Statement [107] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ) always clobbers reg byte a +Statement [108] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ) always clobbers reg byte a +Statement [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [111] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ) always clobbers reg byte a +Statement [112] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ) always clobbers reg byte a +Statement [113] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] ) always clobbers reg byte a +Statement [115] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::sinx#1 ] ) always clobbers reg byte a +Statement [118] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#5 ] ) always clobbers reg byte a +Statement [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ mulu16_sel::select#10 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ sin16s::isUpper#2 ] -Statement [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] ) always clobbers reg byte a -Statement [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [124] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] ) always clobbers reg byte a -Statement [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [138] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:64 [ divr16u::return#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:165 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::quotient_hi#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [140] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [142] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] ) always clobbers reg byte a +Statement [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [126] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] ) always clobbers reg byte a +Statement [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [140] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:66 [ divr16u::return#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::quotient_hi#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [142] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [144] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ divr16u::i#2 divr16u::i#1 ] -Statement [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [156] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [158] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [162] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [166] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [167] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [169] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [171] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [172] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a -Statement [173] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [174] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [175] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [177] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a -Statement [179] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [180] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [182] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [183] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [185] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y +Statement [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [158] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [164] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a +Statement [169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a +Statement [171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a +Statement [174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a +Statement [175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y +Statement [176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a +Statement [181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [187] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ sin16s::isUpper#2 ] -Statement [186] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [187] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [188] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [190] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [191] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [192] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [193] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [195] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [196] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [197] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [199] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ) always clobbers reg byte a -Statement [200] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [201] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [202] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [203] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [205] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ) always clobbers reg byte a -Statement [206] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [207] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [208] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [210] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ) always clobbers reg byte a -Statement [211] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [212] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [213] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [215] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [218] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a reg byte y -Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a -Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a +Statement [188] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ) always clobbers reg byte a +Statement [202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ) always clobbers reg byte a +Statement [208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ) always clobbers reg byte a +Statement [213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a +Statement [215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ) always clobbers reg byte a reg byte y +Statement [12] if((signed word) main::sw#0<(signed byte) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#52 main::i#2 main::sw#0 ] ) always clobbers reg byte a +Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [32] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a -Statement [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [37] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_char_cursor#43 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#43 print_word::w#0 ] ) always clobbers reg byte a -Statement [40] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#43 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:17::print_word:38 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#43 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [42] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:17::print_word:38 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [46] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ( main:2::print_sword:17::print_word:38::print_byte:41 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] main:2::print_sword:17::print_word:38::print_byte:43 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ) always clobbers reg byte a -Statement [49] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:17::print_word:38::print_byte:41 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:17::print_word:38::print_byte:43 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [54] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 [ print_char_cursor#33 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#33 ] main:2::print_sword:17::print_word:38::print_byte:41::print_char:48 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:17::print_word:38::print_byte:43::print_char:48 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:17::print_word:38::print_byte:41::print_char:51 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#33 ] main:2::print_sword:17::print_word:38::print_byte:43::print_char:51 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#33 ] ) always clobbers reg byte y -Statement [59] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [61] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [65] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] ) always clobbers reg byte a -Statement [66] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] ) always clobbers reg byte a -Statement [68] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a -Statement [70] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ) always clobbers reg byte a -Statement [71] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ) always clobbers reg byte a -Statement [72] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ) always clobbers reg byte a reg byte y -Statement [73] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a -Statement [74] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a -Statement [76] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ) always clobbers reg byte a -Statement [78] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a -Statement [79] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#1 ] ) always clobbers reg byte a -Statement [81] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] ) always clobbers reg byte a -Statement [82] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x#2 ] ) always clobbers reg byte a -Statement [84] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 ] ) always clobbers reg byte a -Statement [85] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ) always clobbers reg byte a -Statement [86] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ) always clobbers reg byte a -Statement [88] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ) always clobbers reg byte a -Statement [89] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ) always clobbers reg byte a -Statement [90] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ) always clobbers reg byte a -Statement [91] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ) always clobbers reg byte a -Statement [93] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ) always clobbers reg byte a -Statement [94] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ) always clobbers reg byte a -Statement [95] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ) always clobbers reg byte a -Statement [97] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ) always clobbers reg byte a -Statement [98] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ) always clobbers reg byte a -Statement [99] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ) always clobbers reg byte a -Statement [100] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ) always clobbers reg byte a -Statement [101] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ) always clobbers reg byte a -Statement [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [104] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ) always clobbers reg byte a -Statement [105] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ) always clobbers reg byte a -Statement [106] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ) always clobbers reg byte a -Statement [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [109] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ) always clobbers reg byte a -Statement [110] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ) always clobbers reg byte a -Statement [111] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] ) always clobbers reg byte a -Statement [113] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::sinx#1 ] ) always clobbers reg byte a -Statement [116] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:69 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#5 ] ) always clobbers reg byte a -Statement [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ) always clobbers reg byte a -Statement [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] ) always clobbers reg byte a -Statement [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [124] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] ) always clobbers reg byte a -Statement [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:87::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:92::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:96::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:102::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:69::mulu16_sel:107::mul16u:120 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:189::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:194::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:198::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:204::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:170::mulu16_sel:209::mul16u:120 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [138] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:64 [ divr16u::return#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:165 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::quotient_hi#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [140] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [142] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:64 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:165 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [156] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [158] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [162] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:64::divr16u:137 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:137 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:64::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:165::divr16u:141 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [166] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [167] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a -Statement [169] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [171] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [172] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a -Statement [173] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [174] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [175] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a -Statement [177] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a -Statement [179] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [180] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [182] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [183] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [185] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y -Statement [186] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [187] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [188] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [190] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [191] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [192] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [193] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [195] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [196] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [197] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [199] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ) always clobbers reg byte a -Statement [200] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [201] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [202] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [203] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [205] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ) always clobbers reg byte a -Statement [206] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [207] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [208] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [210] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ) always clobbers reg byte a -Statement [211] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [212] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [213] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [215] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [218] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:170 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#51 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#51 print_sword::w#1 ] ) always clobbers reg byte a +Statement [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 [ print_char_cursor#35 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_char:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:47::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:49::print_char:54 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:47::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#35 ] main:2::print_sword:17::print_word:37::print_byte:49::print_char:57 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#35 ] ) always clobbers reg byte y +Statement [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:47 [ main::st1#2 main::st2#2 main::i#2 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:49 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [61] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [63] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [67] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] ) always clobbers reg byte a +Statement [68] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] ) always clobbers reg byte a +Statement [70] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a +Statement [72] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ) always clobbers reg byte a +Statement [73] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ) always clobbers reg byte a +Statement [74] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ) always clobbers reg byte a reg byte y +Statement [75] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a +Statement [76] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a +Statement [78] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ) always clobbers reg byte a +Statement [80] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a +Statement [81] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#1 ] ) always clobbers reg byte a +Statement [83] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] ) always clobbers reg byte a +Statement [84] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x#2 ] ) always clobbers reg byte a +Statement [86] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 ] ) always clobbers reg byte a +Statement [87] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ) always clobbers reg byte a +Statement [88] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ) always clobbers reg byte a +Statement [90] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ) always clobbers reg byte a +Statement [91] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ) always clobbers reg byte a +Statement [92] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ) always clobbers reg byte a +Statement [95] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ) always clobbers reg byte a +Statement [96] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ) always clobbers reg byte a +Statement [97] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ) always clobbers reg byte a +Statement [99] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ) always clobbers reg byte a +Statement [100] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ) always clobbers reg byte a +Statement [101] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ) always clobbers reg byte a +Statement [103] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ) always clobbers reg byte a +Statement [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [106] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ) always clobbers reg byte a +Statement [107] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ) always clobbers reg byte a +Statement [108] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ) always clobbers reg byte a +Statement [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [111] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ) always clobbers reg byte a +Statement [112] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ) always clobbers reg byte a +Statement [113] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] ) always clobbers reg byte a +Statement [115] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::sinx#1 ] ) always clobbers reg byte a +Statement [118] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:71 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#5 ] ) always clobbers reg byte a +Statement [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ) always clobbers reg byte a +Statement [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] ) always clobbers reg byte a +Statement [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [126] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] ) always clobbers reg byte a +Statement [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:89::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:94::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:98::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:104::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:71::mulu16_sel:109::mul16u:122 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:122 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [140] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:66 [ divr16u::return#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::quotient_hi#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [142] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [144] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:66 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [158] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [164] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:66::divr16u:139 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:139 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:66::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:143 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) always clobbers reg byte a +Statement [169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) always clobbers reg byte a +Statement [171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a +Statement [174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a +Statement [175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y +Statement [176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a +Statement [181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [187] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y +Statement [188] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ) always clobbers reg byte a +Statement [202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ) always clobbers reg byte a +Statement [208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ) always clobbers reg byte a +Statement [213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a +Statement [215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:172 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ main::i#2 main::i#1 ] : zp ZP_BYTE:6 , reg byte x , Potential registers zp ZP_WORD:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:7 , -Potential registers zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] : zp ZP_WORD:9 , -Potential registers zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:11 , reg byte x , -Potential registers zp ZP_BYTE:12 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] : zp ZP_WORD:13 , +Potential registers zp ZP_WORD:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] : zp ZP_WORD:9 , +Potential registers zp ZP_BYTE:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:12 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] : zp ZP_WORD:12 , +Potential registers zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:14 , reg byte x , Potential registers zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:15 , Potential registers zp ZP_DWORD:17 [ sin16s_genb::x#2 sin16s_genb::x#1 ] : zp ZP_DWORD:17 , Potential registers zp ZP_WORD:21 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] : zp ZP_WORD:21 , @@ -5544,7 +5578,7 @@ REGISTER UPLIFT SCOPES Uplift Scope [mul16u] 353.83: zp ZP_DWORD:37 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245.57: zp ZP_DWORD:41 [ mul16u::mb#2 mul16u::mb#1 ] 202: zp ZP_BYTE:129 [ mul16u::$1 ] 170: zp ZP_WORD:35 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] 4: zp ZP_DWORD:115 [ mul16u::return#2 ] 2: zp ZP_WORD:45 [ mul16u::b#0 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] Uplift Scope [divr16u] 106.92: zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:142 [ divr16u::$1 ] 22: zp ZP_BYTE:143 [ divr16u::$2 ] 18.19: zp ZP_BYTE:53 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:130 [ divr16u::return#2 ] 4: zp ZP_WORD:134 [ divr16u::return#3 ] -Uplift Scope [] 182.57: zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] 0.8: zp ZP_WORD:144 [ rem16u#1 ] +Uplift Scope [] 177.86: zp ZP_WORD:12 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] 0.8: zp ZP_WORD:144 [ rem16u#1 ] Uplift Scope [mulu16_sel] 46: zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] 41: zp ZP_WORD:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] 4: zp ZP_WORD:89 [ mulu16_sel::return#18 ] 4: zp ZP_WORD:93 [ mulu16_sel::return#19 ] 4: zp ZP_WORD:97 [ mulu16_sel::return#20 ] 4: zp ZP_WORD:103 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:107 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:119 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:123 [ mulu16_sel::$1 ] 4: zp ZP_WORD:164 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:168 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:172 [ mulu16_sel::return#14 ] 4: zp ZP_WORD:178 [ mulu16_sel::return#15 ] 4: zp ZP_WORD:182 [ mulu16_sel::return#16 ] 1.83: zp ZP_WORD:127 [ mulu16_sel::return#17 ] 0.33: zp ZP_BYTE:34 [ mulu16_sel::select#10 ] Uplift Scope [sin16s] 27.5: zp ZP_DWORD:63 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:154 [ sin16s::return#0 ] 13: zp ZP_WORD:67 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:158 [ sin16s::$4 ] 4: zp ZP_WORD:166 [ sin16s::x2#0 ] 4: zp ZP_WORD:174 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:180 [ sin16s::x4#0 ] 4: zp ZP_WORD:184 [ sin16s::x5#0 ] 4: zp ZP_WORD:186 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:170 [ sin16s::x3#0 ] 1: zp ZP_WORD:188 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:162 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:176 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:62 [ sin16s::isUpper#2 ] Uplift Scope [sin16sb] 27.5: zp ZP_WORD:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] 22: zp ZP_WORD:83 [ sin16sb::return#0 ] 13: zp ZP_WORD:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] 4: zp ZP_WORD:91 [ sin16sb::x2#0 ] 4: zp ZP_WORD:99 [ sin16sb::x3_6#0 ] 4: zp ZP_WORD:105 [ sin16sb::x4#0 ] 4: zp ZP_WORD:109 [ sin16sb::x5#0 ] 4: zp ZP_WORD:111 [ sin16sb::x5_128#0 ] 1: zp ZP_WORD:95 [ sin16sb::x3#0 ] 1: zp ZP_WORD:113 [ sin16sb::usinx#1 ] 0.64: zp ZP_WORD:87 [ sin16sb::x1#0 ] 0.33: zp ZP_WORD:101 [ sin16sb::usinx#0 ] 0.06: zp ZP_BYTE:25 [ sin16sb::isUpper#2 ] @@ -5552,39 +5586,39 @@ Uplift Scope [sin16s_gen] 22: zp ZP_WORD:156 [ sin16s_gen::$1 ] 19.25: zp ZP_WOR Uplift Scope [sin16s_genb] 22: zp ZP_WORD:85 [ sin16s_genb::$2 ] 19.25: zp ZP_WORD:23 [ sin16s_genb::i#2 sin16s_genb::i#1 ] 12.05: zp ZP_DWORD:17 [ sin16s_genb::x#2 sin16s_genb::x#1 ] 11: zp ZP_WORD:21 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] 1.18: zp ZP_DWORD:79 [ sin16s_genb::step#0 ] Uplift Scope [main] 18.33: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 10.33: zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] 8.8: zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] 6.6: zp ZP_WORD:69 [ main::sw#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [print_byte] 10: zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:73 [ print_byte::$0 ] 4: zp ZP_BYTE:74 [ print_byte::$2 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:73 [ print_byte::$0 ] 4: zp ZP_BYTE:74 [ print_byte::$2 ] Uplift Scope [div32u16u] 4: zp ZP_DWORD:75 [ div32u16u::return#3 ] 4: zp ZP_WORD:136 [ div32u16u::quotient_lo#0 ] 4: zp ZP_DWORD:146 [ div32u16u::return#2 ] 1.5: zp ZP_DWORD:138 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:132 [ div32u16u::quotient_hi#0 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:12 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplift Scope [print_sword] 12.25: zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_sword] 10.83: zp ZP_WORD:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Uplift Scope [print_word] 2: zp ZP_WORD:71 [ print_word::w#0 ] -Uplifting [mul16u] best 29930 combination zp ZP_DWORD:37 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:41 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:35 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:115 [ mul16u::return#2 ] zp ZP_WORD:45 [ mul16u::b#0 ] -Uplifting [print_str] best 29930 combination zp ZP_WORD:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [divr16u] best 29720 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:130 [ divr16u::return#2 ] zp ZP_WORD:134 [ divr16u::return#3 ] -Uplifting [] best 29720 combination zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] zp ZP_WORD:144 [ rem16u#1 ] -Uplifting [mulu16_sel] best 29689 combination zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] zp ZP_WORD:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] zp ZP_WORD:89 [ mulu16_sel::return#18 ] zp ZP_WORD:93 [ mulu16_sel::return#19 ] zp ZP_WORD:97 [ mulu16_sel::return#20 ] zp ZP_WORD:103 [ mulu16_sel::return#10 ] zp ZP_WORD:107 [ mulu16_sel::return#11 ] zp ZP_DWORD:119 [ mulu16_sel::$0 ] zp ZP_DWORD:123 [ mulu16_sel::$1 ] zp ZP_WORD:164 [ mulu16_sel::return#0 ] zp ZP_WORD:168 [ mulu16_sel::return#1 ] zp ZP_WORD:172 [ mulu16_sel::return#14 ] zp ZP_WORD:178 [ mulu16_sel::return#15 ] zp ZP_WORD:182 [ mulu16_sel::return#16 ] zp ZP_WORD:127 [ mulu16_sel::return#17 ] reg byte x [ mulu16_sel::select#10 ] -Uplifting [sin16s] best 29689 combination zp ZP_DWORD:63 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:154 [ sin16s::return#0 ] zp ZP_WORD:67 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:158 [ sin16s::$4 ] zp ZP_WORD:166 [ sin16s::x2#0 ] zp ZP_WORD:174 [ sin16s::x3_6#0 ] zp ZP_WORD:180 [ sin16s::x4#0 ] zp ZP_WORD:184 [ sin16s::x5#0 ] zp ZP_WORD:186 [ sin16s::x5_128#0 ] zp ZP_WORD:170 [ sin16s::x3#0 ] zp ZP_WORD:188 [ sin16s::usinx#1 ] zp ZP_WORD:162 [ sin16s::x1#0 ] zp ZP_WORD:176 [ sin16s::usinx#0 ] zp ZP_BYTE:62 [ sin16s::isUpper#2 ] -Uplifting [sin16sb] best 29680 combination zp ZP_WORD:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] zp ZP_WORD:83 [ sin16sb::return#0 ] zp ZP_WORD:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] zp ZP_WORD:91 [ sin16sb::x2#0 ] zp ZP_WORD:99 [ sin16sb::x3_6#0 ] zp ZP_WORD:105 [ sin16sb::x4#0 ] zp ZP_WORD:109 [ sin16sb::x5#0 ] zp ZP_WORD:111 [ sin16sb::x5_128#0 ] zp ZP_WORD:95 [ sin16sb::x3#0 ] zp ZP_WORD:113 [ sin16sb::usinx#1 ] zp ZP_WORD:87 [ sin16sb::x1#0 ] zp ZP_WORD:101 [ sin16sb::usinx#0 ] reg byte y [ sin16sb::isUpper#2 ] -Uplifting [sin16s_gen] best 29680 combination zp ZP_WORD:156 [ sin16s_gen::$1 ] zp ZP_WORD:60 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:54 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:58 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:150 [ sin16s_gen::step#0 ] -Uplifting [sin16s_genb] best 29680 combination zp ZP_WORD:85 [ sin16s_genb::$2 ] zp ZP_WORD:23 [ sin16s_genb::i#2 sin16s_genb::i#1 ] zp ZP_DWORD:17 [ sin16s_genb::x#2 sin16s_genb::x#1 ] zp ZP_WORD:21 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] zp ZP_DWORD:79 [ sin16s_genb::step#0 ] -Uplifting [main] best 29590 combination reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:69 [ main::sw#0 ] -Uplifting [print_cls] best 29590 combination zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 29582 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [div32u16u] best 29582 combination zp ZP_DWORD:75 [ div32u16u::return#3 ] zp ZP_WORD:136 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:146 [ div32u16u::return#2 ] zp ZP_DWORD:138 [ div32u16u::return#0 ] zp ZP_WORD:132 [ div32u16u::quotient_hi#0 ] -Uplifting [print_char] best 29570 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -Uplifting [print_sword] best 29570 combination zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_word] best 29570 combination zp ZP_WORD:71 [ print_word::w#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 29570 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [mul16u] best 29947 combination zp ZP_DWORD:37 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:41 [ mul16u::mb#2 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:35 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:115 [ mul16u::return#2 ] zp ZP_WORD:45 [ mul16u::b#0 ] +Uplifting [print_str] best 29947 combination zp ZP_WORD:7 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [divr16u] best 29737 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:130 [ divr16u::return#2 ] zp ZP_WORD:134 [ divr16u::return#3 ] +Uplifting [] best 29737 combination zp ZP_WORD:12 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] zp ZP_WORD:144 [ rem16u#1 ] +Uplifting [mulu16_sel] best 29706 combination zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] zp ZP_WORD:32 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 ] zp ZP_WORD:89 [ mulu16_sel::return#18 ] zp ZP_WORD:93 [ mulu16_sel::return#19 ] zp ZP_WORD:97 [ mulu16_sel::return#20 ] zp ZP_WORD:103 [ mulu16_sel::return#10 ] zp ZP_WORD:107 [ mulu16_sel::return#11 ] zp ZP_DWORD:119 [ mulu16_sel::$0 ] zp ZP_DWORD:123 [ mulu16_sel::$1 ] zp ZP_WORD:164 [ mulu16_sel::return#0 ] zp ZP_WORD:168 [ mulu16_sel::return#1 ] zp ZP_WORD:172 [ mulu16_sel::return#14 ] zp ZP_WORD:178 [ mulu16_sel::return#15 ] zp ZP_WORD:182 [ mulu16_sel::return#16 ] zp ZP_WORD:127 [ mulu16_sel::return#17 ] reg byte x [ mulu16_sel::select#10 ] +Uplifting [sin16s] best 29706 combination zp ZP_DWORD:63 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:154 [ sin16s::return#0 ] zp ZP_WORD:67 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:158 [ sin16s::$4 ] zp ZP_WORD:166 [ sin16s::x2#0 ] zp ZP_WORD:174 [ sin16s::x3_6#0 ] zp ZP_WORD:180 [ sin16s::x4#0 ] zp ZP_WORD:184 [ sin16s::x5#0 ] zp ZP_WORD:186 [ sin16s::x5_128#0 ] zp ZP_WORD:170 [ sin16s::x3#0 ] zp ZP_WORD:188 [ sin16s::usinx#1 ] zp ZP_WORD:162 [ sin16s::x1#0 ] zp ZP_WORD:176 [ sin16s::usinx#0 ] zp ZP_BYTE:62 [ sin16s::isUpper#2 ] +Uplifting [sin16sb] best 29697 combination zp ZP_WORD:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] zp ZP_WORD:83 [ sin16sb::return#0 ] zp ZP_WORD:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] zp ZP_WORD:91 [ sin16sb::x2#0 ] zp ZP_WORD:99 [ sin16sb::x3_6#0 ] zp ZP_WORD:105 [ sin16sb::x4#0 ] zp ZP_WORD:109 [ sin16sb::x5#0 ] zp ZP_WORD:111 [ sin16sb::x5_128#0 ] zp ZP_WORD:95 [ sin16sb::x3#0 ] zp ZP_WORD:113 [ sin16sb::usinx#1 ] zp ZP_WORD:87 [ sin16sb::x1#0 ] zp ZP_WORD:101 [ sin16sb::usinx#0 ] reg byte y [ sin16sb::isUpper#2 ] +Uplifting [sin16s_gen] best 29697 combination zp ZP_WORD:156 [ sin16s_gen::$1 ] zp ZP_WORD:60 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:54 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:58 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:150 [ sin16s_gen::step#0 ] +Uplifting [sin16s_genb] best 29697 combination zp ZP_WORD:85 [ sin16s_genb::$2 ] zp ZP_WORD:23 [ sin16s_genb::i#2 sin16s_genb::i#1 ] zp ZP_DWORD:17 [ sin16s_genb::x#2 sin16s_genb::x#1 ] zp ZP_WORD:21 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] zp ZP_DWORD:79 [ sin16s_genb::step#0 ] +Uplifting [main] best 29607 combination reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:69 [ main::sw#0 ] +Uplifting [print_cls] best 29607 combination zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 29599 combination zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [div32u16u] best 29599 combination zp ZP_DWORD:75 [ div32u16u::return#3 ] zp ZP_WORD:136 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:146 [ div32u16u::return#2 ] zp ZP_DWORD:138 [ div32u16u::return#0 ] zp ZP_WORD:132 [ div32u16u::quotient_hi#0 ] +Uplifting [print_char] best 29584 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_sword] best 29584 combination zp ZP_WORD:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [print_word] best 29584 combination zp ZP_WORD:71 [ print_word::w#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_byte] best 29584 combination zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 29570 combination zp ZP_BYTE:62 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 29584 combination zp ZP_BYTE:62 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 ] ] with [ zp ZP_WORD:113 [ sin16sb::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 ] ] with [ zp ZP_WORD:95 [ sin16sb::x3#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 ] ] with [ zp ZP_WORD:170 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:144 [ rem16u#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:67 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:188 [ sin16s::usinx#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] ] with [ zp ZP_WORD:69 [ main::sw#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 ] ] with [ zp ZP_WORD:71 [ print_word::w#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] with [ zp ZP_WORD:69 [ main::sw#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 ] ] with [ zp ZP_WORD:71 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 ] ] with [ zp ZP_WORD:87 [ sin16sb::x1#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 sin16sb::usinx#1 ] ] with [ zp ZP_WORD:83 [ sin16sb::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 sin16s::x3#0 ] ] with [ zp ZP_WORD:91 [ sin16sb::x2#0 ] ] - score: 1 @@ -5625,9 +5659,9 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:89 [ mulu16_se Coalescing zero page register with common assignment [ zp ZP_WORD:89 [ mulu16_sel::return#18 mulu16_sel::return#17 mulu16_sel::return#20 sin16sb::x3_6#0 mulu16_sel::return#11 sin16sb::x5#0 mulu16_sel::return#14 sin16s::x3_6#0 mulu16_sel::return#16 sin16s::x5#0 ] ] with [ zp ZP_WORD:111 [ sin16sb::x5_128#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:89 [ mulu16_sel::return#18 mulu16_sel::return#17 mulu16_sel::return#20 sin16sb::x3_6#0 mulu16_sel::return#11 sin16sb::x5#0 mulu16_sel::return#14 sin16s::x3_6#0 mulu16_sel::return#16 sin16s::x5#0 sin16sb::x5_128#0 ] ] with [ zp ZP_WORD:186 [ sin16s::x5_128#0 ] ] - score: 1 Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 print_word::w#0 ] -Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated (was zp ZP_WORD:13) zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] +Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] +Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated (was zp ZP_WORD:15) zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] Allocated (was zp ZP_DWORD:17) zp ZP_DWORD:15 [ sin16s_genb::x#2 sin16s_genb::x#1 ] Allocated (was zp ZP_WORD:21) zp ZP_WORD:19 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] @@ -5674,7 +5708,7 @@ ASSEMBLER BEFORE OPTIMIZATION .const PI_HALF_u4f12 = $1922 .label print_line_cursor = $400 .label rem16u = $29 - .label print_char_cursor = $b + .label print_char_cursor = $a //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -5698,7 +5732,7 @@ main: { .label st1 = 2 .label st2 = 4 //SEG11 [5] call sin16s_gen - //SEG12 [164] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG12 [166] phi from main to sin16s_gen [phi:main->sin16s_gen] sin16s_gen_from_main: jsr sin16s_gen //SEG13 [6] phi from main to main::@4 [phi:main->main::@4] @@ -5707,7 +5741,7 @@ main: { //SEG14 main::@4 b4: //SEG15 [7] call sin16s_genb - //SEG16 [63] phi from main::@4 to sin16s_genb [phi:main::@4->sin16s_genb] + //SEG16 [65] phi from main::@4 to sin16s_genb [phi:main::@4->sin16s_genb] sin16s_genb_from_b4: jsr sin16s_genb //SEG17 [8] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -5716,14 +5750,14 @@ main: { //SEG18 main::@5 b5: //SEG19 [9] call print_cls - //SEG20 [57] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG20 [59] phi from main::@5 to print_cls [phi:main::@5->print_cls] print_cls_from_b5: jsr print_cls //SEG21 [10] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: //SEG22 [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG23 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) print_char_cursor#52 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#1] -- pbuz1=pbuc1 lda #print_line_cursor @@ -5742,7 +5776,7 @@ main: { //SEG26 [10] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: //SEG27 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy - //SEG28 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@7->main::@1#1] -- register_copy + //SEG28 [10] phi (byte*) print_char_cursor#52 = (byte*) print_char_cursor#2 [phi:main::@7->main::@1#1] -- register_copy //SEG29 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@7->main::@1#2] -- register_copy //SEG30 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@7->main::@1#3] -- register_copy jmp b1 @@ -5769,7 +5803,7 @@ main: { //SEG36 [14] call print_str //SEG37 [25] phi from main::@3 to print_str [phi:main::@3->print_str] print_str_from_b3: - //SEG38 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG38 [25] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#52 [phi:main::@3->print_str#0] -- register_copy //SEG39 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #main::@2] b2_from_b1: b2_from_b3: - //SEG41 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG41 [15] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52 [phi:main::@1/main::@3->main::@2#0] -- register_copy jmp b2 //SEG42 main::@2 b2: @@ -5794,7 +5828,7 @@ main: { //SEG47 [19] call print_str //SEG48 [25] phi from main::@6 to print_str [phi:main::@6->print_str] print_str_from_b6: - //SEG49 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@6->print_str#0] -- register_copy + //SEG49 [25] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#13 [phi:main::@6->print_str#0] -- register_copy //SEG50 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str::@1] b1_from_print_str: b1_from_b2: - //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#54 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG61 [26] 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 //SEG62 print_str::@1 @@ -5882,25 +5916,52 @@ print_str: { // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - //SEG71 [32] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG71 [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG72 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG73 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG72 [33] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG73 print_sword::@3 + b3: //SEG74 [34] call print_char - //SEG75 [53] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG76 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG77 [53] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG75 [42] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG76 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG77 [42] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG78 [35] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG79 [35] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG80 print_sword::@2 + b2: + //SEG81 [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG82 [37] call print_word + jsr print_word + jmp breturn + //SEG83 print_sword::@return + breturn: + //SEG84 [38] return + rts + //SEG85 [39] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG86 print_sword::@1 + b1: + //SEG87 [40] call print_char + //SEG88 [42] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG89 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG90 [42] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG78 print_sword::@3 - b3: - //SEG79 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG91 print_sword::@4 + b4: + //SEG92 [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -5908,142 +5969,125 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG80 [36] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG81 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG82 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG83 print_sword::@1 - b1: - //SEG84 [37] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG85 [38] call print_word - jsr print_word - jmp breturn - //SEG86 print_sword::@return - breturn: - //SEG87 [39] return - rts + jmp b2_from_b4 } -//SEG88 print_word -// Print a word as HEX -// print_word(word zeropage(8) w) -print_word: { - .label w = 8 - //SEG89 [40] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda w+1 - sta print_byte.b - //SEG90 [41] call print_byte - //SEG91 [45] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG92 [45] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG93 [45] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - //SEG94 print_word::@1 - b1: - //SEG95 [42] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 - lda w - sta print_byte.b - //SEG96 [43] call print_byte - //SEG97 [45] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG98 [45] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG99 [45] 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 - //SEG100 print_word::@return - breturn: - //SEG101 [44] return - rts -} -//SEG102 print_byte -// Print a byte as HEX -// print_byte(byte zeropage($a) b) -print_byte: { - .label b = $a - //SEG103 [46] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda b - lsr - lsr - lsr - lsr - //SEG104 [47] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - //SEG105 [48] call print_char - //SEG106 [53] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - //SEG107 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG108 [53] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - //SEG109 print_byte::@1 - b1: - //SEG110 [49] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 - lda #$f - and b - //SEG111 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - //SEG112 [51] call print_char - //SEG113 [53] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - //SEG114 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG115 [53] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - //SEG116 print_byte::@return - breturn: - //SEG117 [52] return - rts -} -//SEG118 print_char +//SEG93 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG119 [54] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa + //SEG94 [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG120 [55] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 + //SEG95 [44] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG121 print_char::@return + //SEG96 print_char::@return breturn: - //SEG122 [56] return + //SEG97 [45] return rts } -//SEG123 print_cls +//SEG98 print_word +// Print a word as HEX +// print_word(word zeropage(8) w) +print_word: { + .label w = 8 + //SEG99 [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte.b + //SEG100 [47] call print_byte + //SEG101 [51] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG102 [51] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy + jsr print_byte + jmp b1 + //SEG103 print_word::@1 + b1: + //SEG104 [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + lda w + sta print_byte.b + //SEG105 [49] call print_byte + //SEG106 [51] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG107 [51] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy + jsr print_byte + jmp breturn + //SEG108 print_word::@return + breturn: + //SEG109 [50] return + rts +} +//SEG110 print_byte +// Print a byte as HEX +// print_byte(byte zeropage($c) b) +print_byte: { + .label b = $c + //SEG111 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + lda b + lsr + lsr + lsr + lsr + //SEG112 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + //SEG113 [54] call print_char + //SEG114 [42] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG115 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG116 [42] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG117 print_byte::@1 + b1: + //SEG118 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and b + //SEG119 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + //SEG120 [57] call print_char + //SEG121 [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG122 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG123 [42] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG124 print_byte::@return + breturn: + //SEG125 [58] return + rts +} +//SEG126 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $d - //SEG124 [58] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG127 [60] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG125 [58] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG128 [60] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG126 [58] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG129 [60] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG127 [58] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG130 [60] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG128 print_cls::@1 + //SEG131 print_cls::@1 b1: - //SEG129 [59] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG132 [61] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG130 [60] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG133 [62] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG131 [61] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG134 [63] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1_from_b1 @@ -6051,12 +6095,12 @@ print_cls: { cmp #div32u16u] + //SEG138 [66] call div32u16u + //SEG139 [138] phi from sin16s_genb to div32u16u [phi:sin16s_genb->div32u16u] div32u16u_from_sin16s_genb: jsr div32u16u - //SEG137 [65] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 + //SEG140 [67] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 jmp b2 - //SEG138 sin16s_genb::@2 + //SEG141 sin16s_genb::@2 b2: - //SEG139 [66] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 - //SEG140 [67] phi from sin16s_genb::@2 to sin16s_genb::@1 [phi:sin16s_genb::@2->sin16s_genb::@1] + //SEG142 [68] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 + //SEG143 [69] phi from sin16s_genb::@2 to sin16s_genb::@1 [phi:sin16s_genb::@2->sin16s_genb::@1] b1_from_b2: - //SEG141 [67] phi (word) sin16s_genb::i#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#0] -- vwuz1=vbuc1 + //SEG144 [69] phi (word) sin16s_genb::i#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG142 [67] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[$78]) main::sintab2#0 [phi:sin16s_genb::@2->sin16s_genb::@1#1] -- pwsz1=pwsc1 + //SEG145 [69] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[$78]) main::sintab2#0 [phi:sin16s_genb::@2->sin16s_genb::@1#1] -- pwsz1=pwsc1 lda #main.sintab2 sta sintab+1 - //SEG143 [67] phi (dword) sin16s_genb::x#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#2] -- vduz1=vbuc1 + //SEG146 [69] phi (dword) sin16s_genb::x#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6097,34 +6141,34 @@ sin16s_genb: { sta x+3 jmp b1 // u[4.28] - //SEG144 [67] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] + //SEG147 [69] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] b1_from_b3: - //SEG145 [67] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- register_copy - //SEG146 [67] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- register_copy - //SEG147 [67] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- register_copy + //SEG148 [69] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- register_copy + //SEG149 [69] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- register_copy + //SEG150 [69] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- register_copy jmp b1 - //SEG148 sin16s_genb::@1 + //SEG151 sin16s_genb::@1 b1: - //SEG149 [68] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 + //SEG152 [70] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 lda x+2 sta sin16sb.x lda x+3 sta sin16sb.x+1 - //SEG150 [69] call sin16sb + //SEG153 [71] call sin16sb jsr sin16sb - //SEG151 [70] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 + //SEG154 [72] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 jmp b3 - //SEG152 sin16s_genb::@3 + //SEG155 sin16s_genb::@3 b3: - //SEG153 [71] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 - //SEG154 [72] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 + //SEG156 [73] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 + //SEG157 [74] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 ldy #0 lda _2 sta (sintab),y iny lda _2+1 sta (sintab),y - //SEG155 [73] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG158 [75] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -6132,7 +6176,7 @@ sin16s_genb: { bcc !+ inc sintab+1 !: - //SEG156 [74] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG159 [76] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6146,12 +6190,12 @@ sin16s_genb: { lda x+3 adc step+3 sta x+3 - //SEG157 [75] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 + //SEG160 [77] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG158 [76] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG161 [78] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b3 @@ -6161,12 +6205,12 @@ sin16s_genb: { bcc b1_from_b3 !: jmp breturn - //SEG159 sin16s_genb::@return + //SEG162 sin16s_genb::@return breturn: - //SEG160 [77] return + //SEG163 [79] return rts } -//SEG161 sin16sb +//SEG164 sin16sb // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -6183,7 +6227,7 @@ sin16sb: { .label x5 = $42 .label x5_128 = $42 .label sinx = $19 - //SEG162 [78] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG165 [80] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin16sb @@ -6193,9 +6237,9 @@ sin16sb: { bcc b1_from_sin16sb !: jmp b4 - //SEG163 sin16sb::@4 + //SEG166 sin16sb::@4 b4: - //SEG164 [79] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG167 [81] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG165 [80] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] + //SEG168 [82] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] b1_from_b4: - //SEG166 [80] phi (byte) sin16sb::isUpper#2 = (byte) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuyy=vbuc1 + //SEG169 [82] phi (byte) sin16sb::isUpper#2 = (byte) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuyy=vbuc1 ldy #1 - //SEG167 [80] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy + //SEG170 [82] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy jmp b1 - //SEG168 [80] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] + //SEG171 [82] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] b1_from_sin16sb: - //SEG169 [80] phi (byte) sin16sb::isUpper#2 = (byte) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuyy=vbuc1 + //SEG172 [82] phi (byte) sin16sb::isUpper#2 = (byte) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG170 [80] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy + //SEG173 [82] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy jmp b1 - //SEG171 sin16sb::@1 + //SEG174 sin16sb::@1 b1: - //SEG172 [81] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG175 [83] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -6227,9 +6271,9 @@ sin16sb: { bcc b2_from_b1 !: jmp b5 - //SEG173 sin16sb::@5 + //SEG176 sin16sb::@5 b5: - //SEG174 [82] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG177 [84] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG175 [83] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] + //SEG178 [85] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] b2_from_b1: b2_from_b5: - //SEG176 [83] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy + //SEG179 [85] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy jmp b2 - //SEG177 sin16sb::@2 + //SEG180 sin16sb::@2 b2: - //SEG178 [84] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG181 [86] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl x1 rol x1+1 asl x1 rol x1+1 asl x1 rol x1+1 - //SEG179 [85] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG182 [87] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG180 [86] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG183 [88] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG181 [87] call mulu16_sel - //SEG182 [117] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] + //SEG184 [89] call mulu16_sel + //SEG185 [119] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG183 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG186 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG184 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy - //SEG185 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy + //SEG187 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy + //SEG188 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG186 [88] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 + //SEG189 [90] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 jmp b7 - //SEG187 sin16sb::@7 + //SEG190 sin16sb::@7 b7: - //SEG188 [89] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 + //SEG191 [91] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 lda mulu16_sel.return_18 sta x2 lda mulu16_sel.return_18+1 sta x2+1 - //SEG189 [90] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 - //SEG190 [91] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG192 [92] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 + //SEG193 [93] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG191 [92] call mulu16_sel - //SEG192 [117] phi from sin16sb::@7 to mulu16_sel [phi:sin16sb::@7->mulu16_sel] + //SEG194 [94] call mulu16_sel + //SEG195 [119] phi from sin16sb::@7 to mulu16_sel [phi:sin16sb::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG193 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG196 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG194 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@7->mulu16_sel#1] -- register_copy - //SEG195 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@7->mulu16_sel#2] -- register_copy + //SEG197 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@7->mulu16_sel#1] -- register_copy + //SEG198 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG196 [93] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG199 [95] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b8 - //SEG197 sin16sb::@8 + //SEG200 sin16sb::@8 b8: - //SEG198 [94] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 - //SEG199 [95] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 - //SEG200 [96] call mulu16_sel - //SEG201 [117] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] + //SEG201 [96] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 + //SEG202 [97] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 + //SEG203 [98] call mulu16_sel + //SEG204 [119] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG202 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG205 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG203 [117] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16sb::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG206 [119] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16sb::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG204 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy + //SEG207 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG205 [97] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 + //SEG208 [99] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 jmp b9 - //SEG206 sin16sb::@9 + //SEG209 sin16sb::@9 b9: - //SEG207 [98] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 - //SEG208 [99] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG210 [100] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 + //SEG211 [101] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6327,49 +6371,49 @@ sin16sb: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG209 [100] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 - //SEG210 [101] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG212 [102] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 + //SEG213 [103] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG211 [102] call mulu16_sel - //SEG212 [117] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] + //SEG214 [104] call mulu16_sel + //SEG215 [119] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG213 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG216 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG214 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@9->mulu16_sel#1] -- register_copy - //SEG215 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy + //SEG217 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@9->mulu16_sel#1] -- register_copy + //SEG218 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG216 [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG219 [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b10 - //SEG217 sin16sb::@10 + //SEG220 sin16sb::@10 b10: - //SEG218 [104] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 - //SEG219 [105] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 - //SEG220 [106] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG221 [106] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 + //SEG222 [107] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 + //SEG223 [108] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG221 [107] call mulu16_sel - //SEG222 [117] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] + //SEG224 [109] call mulu16_sel + //SEG225 [119] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG223 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG226 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG224 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy - //SEG225 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy + //SEG227 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy + //SEG228 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG226 [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 + //SEG229 [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 jmp b11 - //SEG227 sin16sb::@11 + //SEG230 sin16sb::@11 b11: - //SEG228 [109] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 - //SEG229 [110] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + //SEG231 [111] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 + //SEG232 [112] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr x5_128+1 ror x5_128 lsr x5_128+1 @@ -6378,7 +6422,7 @@ sin16sb: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG230 [111] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG233 [113] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6386,13 +6430,13 @@ sin16sb: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG231 [112] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 -- vbuyy_eq_0_then_la1 + //SEG234 [114] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 -- vbuyy_eq_0_then_la1 cpy #0 beq b12 jmp b6 - //SEG232 sin16sb::@6 + //SEG235 sin16sb::@6 b6: - //SEG233 [113] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG236 [115] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc sinx @@ -6400,24 +6444,24 @@ sin16sb: { lda #0 sbc sinx+1 sta sinx+1 - //SEG234 [114] phi from sin16sb::@12 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3] + //SEG237 [116] phi from sin16sb::@12 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3] b3_from_b12: b3_from_b6: - //SEG235 [114] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3#0] -- register_copy + //SEG238 [116] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3#0] -- register_copy jmp b3 - //SEG236 sin16sb::@3 + //SEG239 sin16sb::@3 b3: jmp breturn - //SEG237 sin16sb::@return + //SEG240 sin16sb::@return breturn: - //SEG238 [115] return + //SEG241 [117] return rts - //SEG239 sin16sb::@12 + //SEG242 sin16sb::@12 b12: - //SEG240 [116] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 + //SEG243 [118] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 jmp b3_from_b12 } -//SEG241 mulu16_sel +//SEG244 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($1b) v1, word zeropage($1d) v2, byte register(X) select) @@ -6433,22 +6477,22 @@ mulu16_sel: { .label return_17 = $42 .label return_18 = $42 .label return_20 = $42 - //SEG242 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 + //SEG245 [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG243 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 - //SEG244 [120] call mul16u - //SEG245 [126] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG246 [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 + //SEG247 [122] call mul16u + //SEG248 [128] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: jsr mul16u - //SEG246 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG249 [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b1 - //SEG247 mulu16_sel::@1 + //SEG250 mulu16_sel::@1 b1: - //SEG248 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG249 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz1_rol_vbuxx + //SEG251 [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG252 [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -6459,18 +6503,18 @@ mulu16_sel: { dex bne !- !e: - //SEG250 [124] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG253 [126] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_17 lda _1+3 sta return_17+1 jmp breturn - //SEG251 mulu16_sel::@return + //SEG254 mulu16_sel::@return breturn: - //SEG252 [125] return + //SEG255 [127] return rts } -//SEG253 mul16u +//SEG256 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($1f) a, word zeropage($1d) b) mul16u: { @@ -6479,9 +6523,9 @@ mul16u: { .label res = $21 .label b = $1d .label return = $21 - //SEG254 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG257 [129] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG255 [127] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 + //SEG258 [129] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 lda b sta mb lda b+1 @@ -6489,39 +6533,39 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG256 [127] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG259 [129] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG257 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG260 [129] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG258 mul16u::@1 + //SEG261 mul16u::@1 b1: - //SEG259 [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG262 [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG260 mul16u::@return + //SEG263 mul16u::@return breturn: - //SEG261 [129] return + //SEG264 [131] return rts - //SEG262 mul16u::@2 + //SEG265 mul16u::@2 b2: - //SEG263 [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG266 [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG264 [131] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG267 [133] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG265 mul16u::@4 + //SEG268 mul16u::@4 b4: - //SEG266 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG269 [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6535,75 +6579,75 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG267 [133] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG270 [135] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG268 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG271 [135] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG269 mul16u::@3 + //SEG272 mul16u::@3 b3: - //SEG270 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG273 [136] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG271 [135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG274 [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG272 [127] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG275 [129] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG273 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG274 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG275 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG276 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG277 [129] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG278 [129] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG276 div32u16u +//SEG279 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $44 .label quotient_lo = $2d .label return = $3e - //SEG277 [137] call divr16u - //SEG278 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG280 [139] call divr16u + //SEG281 [148] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG279 [146] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG282 [148] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG280 [146] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG283 [148] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG281 [138] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG284 [140] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b1 - //SEG282 div32u16u::@1 + //SEG285 div32u16u::@1 b1: - //SEG283 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG286 [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG284 [140] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG285 [141] call divr16u - //SEG286 [146] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG287 [142] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG288 [143] call divr16u + //SEG289 [148] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from_b1: - //SEG287 [146] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG290 [148] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG288 [146] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG291 [148] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG289 [142] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG292 [144] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b2 - //SEG290 div32u16u::@2 + //SEG293 div32u16u::@2 b2: - //SEG291 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG292 [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG294 [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG295 [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -6613,12 +6657,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG293 div32u16u::@return + //SEG296 div32u16u::@return breturn: - //SEG294 [145] return + //SEG297 [147] return rts } -//SEG295 divr16u +//SEG298 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6629,58 +6673,58 @@ divr16u: { .label dividend = $2b .label quotient = $2d .label return = $2d - //SEG296 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG299 [149] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG297 [147] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG300 [149] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG298 [147] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG301 [149] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG299 [147] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG300 [147] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG302 [149] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG303 [149] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG301 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG304 [149] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG302 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG303 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG304 [147] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG305 [147] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG305 [149] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG306 [149] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG307 [149] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG308 [149] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG306 divr16u::@1 + //SEG309 divr16u::@1 b1: - //SEG307 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG310 [150] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG308 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG311 [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG309 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG312 [152] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG310 [151] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG313 [153] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG311 divr16u::@4 + //SEG314 divr16u::@4 b4: - //SEG312 [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG315 [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG313 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG316 [155] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG314 [153] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG317 [155] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG315 divr16u::@2 + //SEG318 divr16u::@2 b2: - //SEG316 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG319 [156] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG317 [155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG320 [157] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG318 [156] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG321 [158] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3_from_b2 @@ -6690,14 +6734,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG319 divr16u::@5 + //SEG322 divr16u::@5 b5: - //SEG320 [157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG323 [159] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG321 [158] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG324 [160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.wavelength sta rem+1 - //SEG322 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG325 [161] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG323 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG324 [159] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG326 [161] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG327 [161] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG325 divr16u::@3 + //SEG328 divr16u::@3 b3: - //SEG326 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG329 [162] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG327 [161] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG330 [163] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG328 divr16u::@6 + //SEG331 divr16u::@6 b6: - //SEG329 [162] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG332 [164] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG330 divr16u::@return + //SEG333 divr16u::@return breturn: - //SEG331 [163] return + //SEG334 [165] return rts } -//SEG332 sin16s_gen +//SEG335 sin16s_gen // Generate signed (large) word sinus table - on the full -$7fff - $7fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -6739,28 +6783,28 @@ sin16s_gen: { .label sintab = $33 .label x = $2f .label i = $35 - //SEG333 [165] call div32u16u - //SEG334 [136] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] + //SEG336 [167] call div32u16u + //SEG337 [138] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] div32u16u_from_sin16s_gen: jsr div32u16u - //SEG335 [166] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG338 [168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b2 - //SEG336 sin16s_gen::@2 + //SEG339 sin16s_gen::@2 b2: - //SEG337 [167] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG338 [168] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] + //SEG340 [169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG341 [170] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] b1_from_b2: - //SEG339 [168] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG342 [170] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG340 [168] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG343 [170] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG341 [168] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG344 [170] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6769,15 +6813,15 @@ sin16s_gen: { sta x+3 jmp b1 // u[4.28] - //SEG342 [168] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG345 [170] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] b1_from_b3: - //SEG343 [168] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy - //SEG344 [168] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy - //SEG345 [168] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy + //SEG346 [170] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy + //SEG347 [170] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy + //SEG348 [170] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy jmp b1 - //SEG346 sin16s_gen::@1 + //SEG349 sin16s_gen::@1 b1: - //SEG347 [169] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG350 [171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -6786,21 +6830,21 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG348 [170] call sin16s + //SEG351 [172] call sin16s jsr sin16s - //SEG349 [171] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG352 [173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b3 - //SEG350 sin16s_gen::@3 + //SEG353 sin16s_gen::@3 b3: - //SEG351 [172] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG352 [173] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG354 [174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG355 [175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG353 [174] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG356 [176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -6808,7 +6852,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG354 [175] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG357 [177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6822,12 +6866,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG355 [176] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG358 [178] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG356 [177] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG359 [179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b3 @@ -6837,12 +6881,12 @@ sin16s_gen: { bcc b1_from_b3 !: jmp breturn - //SEG357 sin16s_gen::@return + //SEG360 sin16s_gen::@return breturn: - //SEG358 [178] return + //SEG361 [180] return rts } -//SEG359 sin16s +//SEG362 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -6861,7 +6905,7 @@ sin16s: { .label x5_128 = $42 .label sinx = $3c .label isUpper = $37 - //SEG360 [179] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG363 [181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -6879,9 +6923,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG361 sin16s::@4 + //SEG364 sin16s::@4 b4: - //SEG362 [180] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG365 [182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG363 [181] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG366 [183] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG364 [181] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG367 [183] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG365 [181] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG368 [183] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG366 [181] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG369 [183] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG367 [181] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG370 [183] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG368 [181] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG371 [183] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG369 sin16s::@1 + //SEG372 sin16s::@1 b1: - //SEG370 [182] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG373 [184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -6929,9 +6973,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG371 sin16s::@5 + //SEG374 sin16s::@5 b5: - //SEG372 [183] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG375 [185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG373 [184] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG376 [186] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG374 [184] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG377 [186] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG375 sin16s::@2 + //SEG378 sin16s::@2 b2: - //SEG376 [185] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 + //SEG379 [187] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _4 @@ -6961,80 +7005,80 @@ sin16s: { rol _4+3 dey bne !- - //SEG377 [186] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG380 [188] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG378 [187] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG381 [189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG379 [188] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG382 [190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG380 [189] call mulu16_sel - //SEG381 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG383 [191] call mulu16_sel + //SEG384 [119] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG382 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG385 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG383 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG384 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG386 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG387 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG385 [190] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG388 [192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b7 - //SEG386 sin16s::@7 + //SEG389 sin16s::@7 b7: - //SEG387 [191] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - //SEG388 [192] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG389 [193] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG390 [193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + //SEG391 [194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG392 [195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG390 [194] call mulu16_sel - //SEG391 [117] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG393 [196] call mulu16_sel + //SEG394 [119] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG392 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG395 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG393 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG394 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG396 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG397 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG395 [195] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG398 [197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b8 - //SEG396 sin16s::@8 + //SEG399 sin16s::@8 b8: - //SEG397 [196] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG398 [197] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG399 [198] call mulu16_sel - //SEG400 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG400 [198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG401 [199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG402 [200] call mulu16_sel + //SEG403 [119] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG401 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG404 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG402 [117] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG405 [119] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG403 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG406 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG404 [199] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 + //SEG407 [201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 jmp b9 - //SEG405 sin16s::@9 + //SEG408 sin16s::@9 b9: - //SEG406 [200] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 - //SEG407 [201] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG409 [202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 + //SEG410 [203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -7042,49 +7086,49 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG408 [202] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG409 [203] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG411 [204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG412 [205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG410 [204] call mulu16_sel - //SEG411 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG413 [206] call mulu16_sel + //SEG414 [119] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG412 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG415 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG413 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG414 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG416 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG417 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG415 [205] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG418 [207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 jmp b10 - //SEG416 sin16s::@10 + //SEG419 sin16s::@10 b10: - //SEG417 [206] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 - //SEG418 [207] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG419 [208] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG420 [208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 + //SEG421 [209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG422 [210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG420 [209] call mulu16_sel - //SEG421 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG423 [211] call mulu16_sel + //SEG424 [119] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG422 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG425 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG423 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG424 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG426 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG427 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG425 [210] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 + //SEG428 [212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 jmp b11 - //SEG426 sin16s::@11 + //SEG429 sin16s::@11 b11: - //SEG427 [211] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 - //SEG428 [212] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + //SEG430 [213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 + //SEG431 [214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr x5_128+1 ror x5_128 lsr x5_128+1 @@ -7093,7 +7137,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG429 [213] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG432 [215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -7101,14 +7145,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG430 [214] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG433 [216] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG431 sin16s::@6 + //SEG434 sin16s::@6 b6: - //SEG432 [215] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG435 [217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc sinx @@ -7116,24 +7160,24 @@ sin16s: { lda #0 sbc sinx+1 sta sinx+1 - //SEG433 [216] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG436 [218] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] b3_from_b12: b3_from_b6: - //SEG434 [216] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG437 [218] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG435 sin16s::@3 + //SEG438 sin16s::@3 b3: jmp breturn - //SEG436 sin16s::@return + //SEG439 sin16s::@return breturn: - //SEG437 [217] return + //SEG440 [219] return rts - //SEG438 sin16s::@12 + //SEG441 sin16s::@12 b12: - //SEG439 [218] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG442 [220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b12 } -//SEG440 File Data +//SEG443 File Data print_hextab: .text "0123456789abcdef" ASSEMBLER OPTIMIZATIONS @@ -7149,15 +7193,16 @@ Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 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 b2 @@ -7225,6 +7270,7 @@ Replacing label b2_from_b1 with b2 Replacing label b1_from_b7 with b1 Replacing label b1_from_b2 with b1 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b3 with b1 @@ -7261,10 +7307,12 @@ Removing instruction b6_from_b2: Removing instruction print_str_from_b6: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: +Removing instruction print_char_from_b1: Removing instruction b1_from_b1: Removing instruction b1_from_b2: Removing instruction b1_from_b3: @@ -7301,9 +7349,10 @@ Removing instruction b6: Removing instruction b7: Removing instruction breturn: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: +Removing instruction breturn: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -7312,7 +7361,6 @@ Removing instruction print_char_from_print_byte: Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: -Removing instruction breturn: Removing instruction b1_from_print_cls: Removing instruction breturn: Removing instruction div32u16u_from_sin16s_genb: @@ -7553,25 +7601,23 @@ FINAL SYMBOL TABLE (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0 -(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0 -(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0 +(byte) print_byte::b#0 b zp ZP_BYTE:12 4.0 +(byte) print_byte::b#1 b zp ZP_BYTE:12 4.0 +(byte) print_byte::b#2 b zp ZP_BYTE:12 2.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#4 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:11 101.0 -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:11 1.1176470588235294 -(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:11 32.7 -(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:11 5.0 -(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:11 2.0 -(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:11 2.0 -(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:11 6.5 -(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:11 8.25 -(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:11 24.0 +(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 101.0 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:10 0.7083333333333334 +(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:10 32.7 +(byte*) print_char_cursor#35 print_char_cursor zp ZP_WORD:10 6.0 +(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:10 5.200000000000001 +(byte*) print_char_cursor#52 print_char_cursor zp ZP_WORD:10 8.25 +(byte*) print_char_cursor#54 print_char_cursor zp ZP_WORD:10 24.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -7595,11 +7641,12 @@ FINAL SYMBOL TABLE (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:8 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:8 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:8 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:8 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -7739,10 +7786,10 @@ zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:6 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -zp ZP_WORD:8 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 print_word::w#0 ] -zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] +zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] +reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:10 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] +zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] zp ZP_DWORD:15 [ sin16s_genb::x#2 sin16s_genb::x#1 ] zp ZP_WORD:19 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] @@ -7778,7 +7825,7 @@ zp ZP_WORD:70 [ sin16s::x1#0 ] FINAL ASSEMBLER -Score: 24932 +Score: 24943 //SEG0 File Comments // Generates a 16-bit signed sinus @@ -7800,7 +7847,7 @@ Score: 24932 .const PI_HALF_u4f12 = $1922 .label print_line_cursor = $400 .label rem16u = $29 - .label print_char_cursor = $b + .label print_char_cursor = $a //SEG3 @begin //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] //SEG5 @1 @@ -7815,22 +7862,22 @@ main: { .label st1 = 2 .label st2 = 4 //SEG11 [5] call sin16s_gen - //SEG12 [164] phi from main to sin16s_gen [phi:main->sin16s_gen] + //SEG12 [166] phi from main to sin16s_gen [phi:main->sin16s_gen] jsr sin16s_gen //SEG13 [6] phi from main to main::@4 [phi:main->main::@4] //SEG14 main::@4 //SEG15 [7] call sin16s_genb - //SEG16 [63] phi from main::@4 to sin16s_genb [phi:main::@4->sin16s_genb] + //SEG16 [65] phi from main::@4 to sin16s_genb [phi:main::@4->sin16s_genb] jsr sin16s_genb //SEG17 [8] phi from main::@4 to main::@5 [phi:main::@4->main::@5] //SEG18 main::@5 //SEG19 [9] call print_cls - //SEG20 [57] phi from main::@5 to print_cls [phi:main::@5->print_cls] + //SEG20 [59] phi from main::@5 to print_cls [phi:main::@5->print_cls] jsr print_cls //SEG21 [10] phi from main::@5 to main::@1 [phi:main::@5->main::@1] //SEG22 [10] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG23 [10] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#1] -- pbuz1=pbuc1 + //SEG23 [10] phi (byte*) print_char_cursor#52 = (const byte*) print_line_cursor#0 [phi:main::@5->main::@1#1] -- pbuz1=pbuc1 lda #print_line_cursor @@ -7847,7 +7894,7 @@ main: { sta st1+1 //SEG26 [10] phi from main::@7 to main::@1 [phi:main::@7->main::@1] //SEG27 [10] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy - //SEG28 [10] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#2 [phi:main::@7->main::@1#1] -- register_copy + //SEG28 [10] phi (byte*) print_char_cursor#52 = (byte*) print_char_cursor#2 [phi:main::@7->main::@1#1] -- register_copy //SEG29 [10] phi (signed word*) main::st2#2 = (signed word*) main::st2#1 [phi:main::@7->main::@1#2] -- register_copy //SEG30 [10] phi (signed word*) main::st1#2 = (signed word*) main::st1#1 [phi:main::@7->main::@1#3] -- register_copy //SEG31 main::@1 @@ -7868,7 +7915,7 @@ main: { //SEG35 main::@3 //SEG36 [14] call print_str //SEG37 [25] phi from main::@3 to print_str [phi:main::@3->print_str] - //SEG38 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#49 [phi:main::@3->print_str#0] -- register_copy + //SEG38 [25] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#52 [phi:main::@3->print_str#0] -- register_copy //SEG39 [25] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 lda #main::@2] - //SEG41 [15] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#49 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG41 [15] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52 [phi:main::@1/main::@3->main::@2#0] -- register_copy //SEG42 main::@2 b2: //SEG43 [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 @@ -7886,7 +7933,7 @@ main: { //SEG46 main::@6 //SEG47 [19] call print_str //SEG48 [25] phi from main::@6 to print_str [phi:main::@6->print_str] - //SEG49 [25] phi (byte*) print_char_cursor#51 = (byte*) print_char_cursor#12 [phi:main::@6->print_str#0] -- register_copy + //SEG49 [25] phi (byte*) print_char_cursor#54 = (byte*) print_char_cursor#13 [phi:main::@6->print_str#0] -- register_copy //SEG50 [25] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str::@1] - //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#51 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG60 [26] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#54 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG61 [26] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy //SEG62 print_str::@1 b1: @@ -7964,19 +8011,38 @@ print_str: { // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - //SEG71 [32] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG71 [32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG72 [33] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG73 print_sword::@2 + bmi b1 + //SEG72 [33] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG73 print_sword::@3 //SEG74 [34] call print_char - //SEG75 [53] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG76 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#48 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG77 [53] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG75 [42] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG76 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG77 [42] phi (byte) print_char::ch#4 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG78 [35] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG79 [35] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG80 print_sword::@2 + b2: + //SEG81 [36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG82 [37] call print_word + jsr print_word + //SEG83 print_sword::@return + //SEG84 [38] return + rts + //SEG85 [39] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG86 print_sword::@1 + b1: + //SEG87 [40] call print_char + //SEG88 [42] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG89 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#51 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG90 [42] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG78 print_sword::@3 - //SEG79 [35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG91 print_sword::@4 + //SEG92 [41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -7984,130 +8050,118 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG80 [36] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG81 [36] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#48 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG82 [36] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG83 print_sword::@1 - b1: - //SEG84 [37] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG85 [38] call print_word - jsr print_word - //SEG86 print_sword::@return - //SEG87 [39] return + jmp b2 +} +//SEG93 print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + //SEG94 [43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + //SEG95 [44] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: + //SEG96 print_char::@return + //SEG97 [45] return rts } -//SEG88 print_word +//SEG98 print_word // Print a word as HEX // print_word(word zeropage(8) w) print_word: { .label w = 8 - //SEG89 [40] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG99 [46] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG90 [41] call print_byte - //SEG91 [45] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG92 [45] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#43 [phi:print_word->print_byte#0] -- register_copy - //SEG93 [45] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG100 [47] call print_byte + //SEG101 [51] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG102 [51] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte - //SEG94 print_word::@1 - //SEG95 [42] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG103 print_word::@1 + //SEG104 [48] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG96 [43] call print_byte - //SEG97 [45] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG98 [45] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG99 [45] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG105 [49] call print_byte + //SEG106 [51] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG107 [51] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte - //SEG100 print_word::@return - //SEG101 [44] return + //SEG108 print_word::@return + //SEG109 [50] return rts } -//SEG102 print_byte +//SEG110 print_byte // Print a byte as HEX -// print_byte(byte zeropage($a) b) +// print_byte(byte zeropage($c) b) print_byte: { - .label b = $a - //SEG103 [46] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + .label b = $c + //SEG111 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG104 [47] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG112 [53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG105 [48] call print_char - //SEG106 [53] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG107 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#46 [phi:print_byte->print_char#0] -- register_copy - //SEG108 [53] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG113 [54] call print_char + //SEG114 [42] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG115 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG116 [42] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG109 print_byte::@1 - //SEG110 [49] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG117 print_byte::@1 + //SEG118 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG111 [50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG119 [56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG112 [51] call print_char - //SEG113 [53] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG114 [53] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG115 [53] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG120 [57] call print_char + //SEG121 [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG122 [42] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG123 [42] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG116 print_byte::@return - //SEG117 [52] return + //SEG124 print_byte::@return + //SEG125 [58] return rts } -//SEG118 print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - //SEG119 [54] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - //SEG120 [55] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - //SEG121 print_char::@return - //SEG122 [56] return - rts -} -//SEG123 print_cls +//SEG126 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $d - //SEG124 [58] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG125 [58] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG127 [60] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG128 [60] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 - //SEG126 [58] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG127 [58] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG128 print_cls::@1 + //SEG129 [60] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG130 [60] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG131 print_cls::@1 b1: - //SEG129 [59] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG132 [61] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG130 [60] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG133 [62] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG131 [61] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG134 [63] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1 lda sc cmp #div32u16u] + //SEG138 [66] call div32u16u + //SEG139 [138] phi from sin16s_genb to div32u16u [phi:sin16s_genb->div32u16u] jsr div32u16u - //SEG137 [65] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 - //SEG138 sin16s_genb::@2 - //SEG139 [66] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 - //SEG140 [67] phi from sin16s_genb::@2 to sin16s_genb::@1 [phi:sin16s_genb::@2->sin16s_genb::@1] - //SEG141 [67] phi (word) sin16s_genb::i#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#0] -- vwuz1=vbuc1 + //SEG140 [67] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 + //SEG141 sin16s_genb::@2 + //SEG142 [68] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 + //SEG143 [69] phi from sin16s_genb::@2 to sin16s_genb::@1 [phi:sin16s_genb::@2->sin16s_genb::@1] + //SEG144 [69] phi (word) sin16s_genb::i#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#0] -- vwuz1=vbuc1 lda #0 sta i sta i+1 - //SEG142 [67] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[$78]) main::sintab2#0 [phi:sin16s_genb::@2->sin16s_genb::@1#1] -- pwsz1=pwsc1 + //SEG145 [69] phi (signed word*) sin16s_genb::sintab#2 = (const signed word[$78]) main::sintab2#0 [phi:sin16s_genb::@2->sin16s_genb::@1#1] -- pwsz1=pwsc1 lda #main.sintab2 sta sintab+1 - //SEG143 [67] phi (dword) sin16s_genb::x#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#2] -- vduz1=vbuc1 + //SEG146 [69] phi (dword) sin16s_genb::x#2 = (byte) 0 [phi:sin16s_genb::@2->sin16s_genb::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 // u[4.28] - //SEG144 [67] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] - //SEG145 [67] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- register_copy - //SEG146 [67] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- register_copy - //SEG147 [67] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- register_copy - //SEG148 sin16s_genb::@1 + //SEG147 [69] phi from sin16s_genb::@3 to sin16s_genb::@1 [phi:sin16s_genb::@3->sin16s_genb::@1] + //SEG148 [69] phi (word) sin16s_genb::i#2 = (word) sin16s_genb::i#1 [phi:sin16s_genb::@3->sin16s_genb::@1#0] -- register_copy + //SEG149 [69] phi (signed word*) sin16s_genb::sintab#2 = (signed word*) sin16s_genb::sintab#0 [phi:sin16s_genb::@3->sin16s_genb::@1#1] -- register_copy + //SEG150 [69] phi (dword) sin16s_genb::x#2 = (dword) sin16s_genb::x#1 [phi:sin16s_genb::@3->sin16s_genb::@1#2] -- register_copy + //SEG151 sin16s_genb::@1 b1: - //SEG149 [68] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 + //SEG152 [70] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 -- vwuz1=_hi_vduz2 lda x+2 sta sin16sb.x lda x+3 sta sin16sb.x+1 - //SEG150 [69] call sin16sb + //SEG153 [71] call sin16sb jsr sin16sb - //SEG151 [70] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 - //SEG152 sin16s_genb::@3 - //SEG153 [71] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 - //SEG154 [72] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 + //SEG154 [72] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 + //SEG155 sin16s_genb::@3 + //SEG156 [73] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 + //SEG157 [74] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 -- _deref_pwsz1=vwsz2 ldy #0 lda _2 sta (sintab),y iny lda _2+1 sta (sintab),y - //SEG155 [73] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG158 [75] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -8172,7 +8226,7 @@ sin16s_genb: { bcc !+ inc sintab+1 !: - //SEG156 [74] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG159 [76] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8186,12 +8240,12 @@ sin16s_genb: { lda x+3 adc step+3 sta x+3 - //SEG157 [75] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 + //SEG160 [77] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG158 [76] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG161 [78] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -8200,11 +8254,11 @@ sin16s_genb: { cmp #PI_u4f12 bcc b4 @@ -8230,8 +8284,8 @@ sin16sb: { cmp #PI_u4f12 sta x+1 - //SEG165 [80] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] - //SEG166 [80] phi (byte) sin16sb::isUpper#2 = (byte) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuyy=vbuc1 + //SEG168 [82] phi from sin16sb::@4 to sin16sb::@1 [phi:sin16sb::@4->sin16sb::@1] + //SEG169 [82] phi (byte) sin16sb::isUpper#2 = (byte) 1 [phi:sin16sb::@4->sin16sb::@1#0] -- vbuyy=vbuc1 ldy #1 - //SEG167 [80] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy + //SEG170 [82] phi (word) sin16sb::x#4 = (word) sin16sb::x#1 [phi:sin16sb::@4->sin16sb::@1#1] -- register_copy jmp b1 - //SEG168 [80] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] + //SEG171 [82] phi from sin16sb to sin16sb::@1 [phi:sin16sb->sin16sb::@1] b4: - //SEG169 [80] phi (byte) sin16sb::isUpper#2 = (byte) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuyy=vbuc1 + //SEG172 [82] phi (byte) sin16sb::isUpper#2 = (byte) 0 [phi:sin16sb->sin16sb::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG170 [80] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy - //SEG171 sin16sb::@1 + //SEG173 [82] phi (word) sin16sb::x#4 = (word) sin16sb::x#0 [phi:sin16sb->sin16sb::@1#1] -- register_copy + //SEG174 sin16sb::@1 b1: - //SEG172 [81] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG175 [83] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2 @@ -8260,8 +8314,8 @@ sin16sb: { cmp #PI_u4f12 sbc x+1 sta x+1 - //SEG175 [83] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] - //SEG176 [83] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy - //SEG177 sin16sb::@2 + //SEG178 [85] phi from sin16sb::@1 sin16sb::@5 to sin16sb::@2 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2] + //SEG179 [85] phi (word) sin16sb::x#6 = (word) sin16sb::x#4 [phi:sin16sb::@1/sin16sb::@5->sin16sb::@2#0] -- register_copy + //SEG180 sin16sb::@2 b2: - //SEG178 [84] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG181 [86] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl x1 rol x1+1 asl x1 rol x1+1 asl x1 rol x1+1 - //SEG179 [85] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG182 [87] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG180 [86] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG183 [88] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG181 [87] call mulu16_sel - //SEG182 [117] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] - //SEG183 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG184 [89] call mulu16_sel + //SEG185 [119] phi from sin16sb::@2 to mulu16_sel [phi:sin16sb::@2->mulu16_sel] + //SEG186 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG184 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy - //SEG185 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy + //SEG187 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#5 [phi:sin16sb::@2->mulu16_sel#1] -- register_copy + //SEG188 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#5 [phi:sin16sb::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG186 [88] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 - //SEG187 sin16sb::@7 - //SEG188 [89] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 + //SEG189 [90] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 + //SEG190 sin16sb::@7 + //SEG191 [91] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 -- vwuz1=vwuz2 lda mulu16_sel.return_18 sta x2 lda mulu16_sel.return_18+1 sta x2+1 - //SEG189 [90] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 - //SEG190 [91] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG192 [92] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 + //SEG193 [93] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG191 [92] call mulu16_sel - //SEG192 [117] phi from sin16sb::@7 to mulu16_sel [phi:sin16sb::@7->mulu16_sel] - //SEG193 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG194 [94] call mulu16_sel + //SEG195 [119] phi from sin16sb::@7 to mulu16_sel [phi:sin16sb::@7->mulu16_sel] + //SEG196 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG194 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@7->mulu16_sel#1] -- register_copy - //SEG195 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@7->mulu16_sel#2] -- register_copy + //SEG197 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#6 [phi:sin16sb::@7->mulu16_sel#1] -- register_copy + //SEG198 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#6 [phi:sin16sb::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG196 [93] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG199 [95] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG197 sin16sb::@8 - //SEG198 [94] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 - //SEG199 [95] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 - //SEG200 [96] call mulu16_sel - //SEG201 [117] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] - //SEG202 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG200 sin16sb::@8 + //SEG201 [96] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 + //SEG202 [97] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 + //SEG203 [98] call mulu16_sel + //SEG204 [119] phi from sin16sb::@8 to mulu16_sel [phi:sin16sb::@8->mulu16_sel] + //SEG205 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16sb::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG203 [117] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16sb::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG206 [119] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16sb::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG204 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy + //SEG207 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#7 [phi:sin16sb::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG205 [97] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 - //SEG206 sin16sb::@9 - //SEG207 [98] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 - //SEG208 [99] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG208 [99] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 + //SEG209 sin16sb::@9 + //SEG210 [100] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 + //SEG211 [101] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8347,43 +8401,43 @@ sin16sb: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG209 [100] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 - //SEG210 [101] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG212 [102] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 + //SEG213 [103] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG211 [102] call mulu16_sel - //SEG212 [117] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] - //SEG213 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG214 [104] call mulu16_sel + //SEG215 [119] phi from sin16sb::@9 to mulu16_sel [phi:sin16sb::@9->mulu16_sel] + //SEG216 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG214 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@9->mulu16_sel#1] -- register_copy - //SEG215 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy + //SEG217 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#8 [phi:sin16sb::@9->mulu16_sel#1] -- register_copy + //SEG218 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#8 [phi:sin16sb::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG216 [103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG219 [105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG217 sin16sb::@10 - //SEG218 [104] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 - //SEG219 [105] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 - //SEG220 [106] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 + //SEG220 sin16sb::@10 + //SEG221 [106] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 + //SEG222 [107] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 + //SEG223 [108] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG221 [107] call mulu16_sel - //SEG222 [117] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] - //SEG223 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG224 [109] call mulu16_sel + //SEG225 [119] phi from sin16sb::@10 to mulu16_sel [phi:sin16sb::@10->mulu16_sel] + //SEG226 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16sb::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG224 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy - //SEG225 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy + //SEG227 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#9 [phi:sin16sb::@10->mulu16_sel#1] -- register_copy + //SEG228 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#9 [phi:sin16sb::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG226 [108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 - //SEG227 sin16sb::@11 - //SEG228 [109] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 - //SEG229 [110] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + //SEG229 [110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 + //SEG230 sin16sb::@11 + //SEG231 [111] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 + //SEG232 [112] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr x5_128+1 ror x5_128 lsr x5_128+1 @@ -8392,7 +8446,7 @@ sin16sb: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG230 [111] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG233 [113] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -8400,11 +8454,11 @@ sin16sb: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG231 [112] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 -- vbuyy_eq_0_then_la1 + //SEG234 [114] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12 -- vbuyy_eq_0_then_la1 cpy #0 beq b3 - //SEG232 sin16sb::@6 - //SEG233 [113] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG235 sin16sb::@6 + //SEG236 [115] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc sinx @@ -8412,17 +8466,17 @@ sin16sb: { lda #0 sbc sinx+1 sta sinx+1 - //SEG234 [114] phi from sin16sb::@12 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3] - //SEG235 [114] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3#0] -- register_copy - //SEG236 sin16sb::@3 + //SEG237 [116] phi from sin16sb::@12 sin16sb::@6 to sin16sb::@3 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3] + //SEG238 [116] phi (signed word) sin16sb::return#1 = (signed word~) sin16sb::return#5 [phi:sin16sb::@12/sin16sb::@6->sin16sb::@3#0] -- register_copy + //SEG239 sin16sb::@3 b3: - //SEG237 sin16sb::@return - //SEG238 [115] return + //SEG240 sin16sb::@return + //SEG241 [117] return rts - //SEG239 sin16sb::@12 - //SEG240 [116] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 + //SEG242 sin16sb::@12 + //SEG243 [118] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 } -//SEG241 mulu16_sel +//SEG244 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($1b) v1, word zeropage($1d) v2, byte register(X) select) @@ -8438,19 +8492,19 @@ mulu16_sel: { .label return_17 = $42 .label return_18 = $42 .label return_20 = $42 - //SEG242 [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 + //SEG245 [120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG243 [119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 - //SEG244 [120] call mul16u - //SEG245 [126] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG246 [121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 + //SEG247 [122] call mul16u + //SEG248 [128] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] jsr mul16u - //SEG246 [121] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG247 mulu16_sel::@1 - //SEG248 [122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 - //SEG249 [123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz1_rol_vbuxx + //SEG249 [123] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG250 mulu16_sel::@1 + //SEG251 [124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 + //SEG252 [125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -8461,16 +8515,16 @@ mulu16_sel: { dex bne !- !e: - //SEG250 [124] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG253 [126] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_17 lda _1+3 sta return_17+1 - //SEG251 mulu16_sel::@return - //SEG252 [125] return + //SEG254 mulu16_sel::@return + //SEG255 [127] return rts } -//SEG253 mul16u +//SEG256 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($1f) a, word zeropage($1d) b) mul16u: { @@ -8479,8 +8533,8 @@ mul16u: { .label res = $21 .label b = $1d .label return = $21 - //SEG254 [127] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG255 [127] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 + //SEG257 [129] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG258 [129] phi (dword) mul16u::mb#2 = (word) mul16u::b#0 [phi:mul16u->mul16u::@1#0] -- vduz1=vwuz2 lda b sta mb lda b+1 @@ -8488,32 +8542,32 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG256 [127] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG259 [129] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 sta res sta res+1 sta res+2 sta res+3 - //SEG257 [127] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG258 mul16u::@1 + //SEG260 [129] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG261 mul16u::@1 b1: - //SEG259 [128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG262 [130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 - //SEG260 mul16u::@return - //SEG261 [129] return + //SEG263 mul16u::@return + //SEG264 [131] return rts - //SEG262 mul16u::@2 + //SEG265 mul16u::@2 b2: - //SEG263 [130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG266 [132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG264 [131] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG267 [133] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG265 mul16u::@4 - //SEG266 [132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG268 mul16u::@4 + //SEG269 [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8527,64 +8581,64 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG267 [133] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] - //SEG268 [133] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy - //SEG269 mul16u::@3 + //SEG270 [135] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG271 [135] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG272 mul16u::@3 b3: - //SEG270 [134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG273 [136] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG271 [135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG274 [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG272 [127] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] - //SEG273 [127] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG274 [127] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG275 [127] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG275 [129] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG276 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG277 [129] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG278 [129] phi (word) mul16u::a#2 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG276 div32u16u +//SEG279 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $44 .label quotient_lo = $2d .label return = $3e - //SEG277 [137] call divr16u - //SEG278 [146] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG279 [146] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG280 [139] call divr16u + //SEG281 [148] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG282 [148] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG280 [146] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG283 [148] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG281 [138] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG282 div32u16u::@1 - //SEG283 [139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG284 [140] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG285 div32u16u::@1 + //SEG286 [141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG284 [140] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG285 [141] call divr16u - //SEG286 [146] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] - //SEG287 [146] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG287 [142] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG288 [143] call divr16u + //SEG289 [148] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG290 [148] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG288 [146] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG291 [148] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG289 [142] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG290 div32u16u::@2 - //SEG291 [143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG292 [144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG292 [144] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG293 div32u16u::@2 + //SEG294 [145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG295 [146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -8593,11 +8647,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG293 div32u16u::@return - //SEG294 [145] return + //SEG296 div32u16u::@return + //SEG297 [147] return rts } -//SEG295 divr16u +//SEG298 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -8608,48 +8662,48 @@ divr16u: { .label dividend = $2b .label quotient = $2d .label return = $2d - //SEG296 [147] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG297 [147] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG299 [149] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG300 [149] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG298 [147] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG301 [149] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG299 [147] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG300 [147] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG301 [147] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG302 [147] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG303 [147] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG304 [147] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG305 [147] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG306 divr16u::@1 + //SEG302 [149] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG303 [149] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG304 [149] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG305 [149] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG306 [149] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG307 [149] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG308 [149] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG309 divr16u::@1 b1: - //SEG307 [148] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG310 [150] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG308 [149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG311 [151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG309 [150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG312 [152] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG310 [151] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG313 [153] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG311 divr16u::@4 - //SEG312 [152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG314 divr16u::@4 + //SEG315 [154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG313 [153] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG314 [153] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG315 divr16u::@2 + //SEG316 [155] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG317 [155] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG318 divr16u::@2 b2: - //SEG316 [154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG319 [156] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG317 [155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG320 [157] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG318 [156] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG321 [158] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.wavelength bcc b3 @@ -8658,13 +8712,13 @@ divr16u: { cmp #main.wavelength sta rem+1 - //SEG322 [159] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG323 [159] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG324 [159] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG325 divr16u::@3 + //SEG325 [161] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG326 [161] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG327 [161] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG328 divr16u::@3 b3: - //SEG326 [160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG329 [162] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG327 [161] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG330 [163] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG328 divr16u::@6 - //SEG329 [162] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG330 divr16u::@return - //SEG331 [163] return + //SEG331 divr16u::@6 + //SEG332 [164] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG333 divr16u::@return + //SEG334 [165] return rts } -//SEG332 sin16s_gen +//SEG335 sin16s_gen // Generate signed (large) word sinus table - on the full -$7fff - $7fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -8699,36 +8753,36 @@ sin16s_gen: { .label sintab = $33 .label x = $2f .label i = $35 - //SEG333 [165] call div32u16u - //SEG334 [136] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] + //SEG336 [167] call div32u16u + //SEG337 [138] phi from sin16s_gen to div32u16u [phi:sin16s_gen->div32u16u] jsr div32u16u - //SEG335 [166] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG336 sin16s_gen::@2 - //SEG337 [167] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 - //SEG338 [168] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] - //SEG339 [168] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG338 [168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG339 sin16s_gen::@2 + //SEG340 [169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 + //SEG341 [170] phi from sin16s_gen::@2 to sin16s_gen::@1 [phi:sin16s_gen::@2->sin16s_gen::@1] + //SEG342 [170] phi (word) sin16s_gen::i#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #0 sta i sta i+1 - //SEG340 [168] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG343 [170] phi (signed word*) sin16s_gen::sintab#2 = (const signed word[$78]) main::sintab1#0 [phi:sin16s_gen::@2->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG341 [168] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG344 [170] phi (dword) sin16s_gen::x#2 = (byte) 0 [phi:sin16s_gen::@2->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 // u[4.28] - //SEG342 [168] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] - //SEG343 [168] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy - //SEG344 [168] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy - //SEG345 [168] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy - //SEG346 sin16s_gen::@1 + //SEG345 [170] phi from sin16s_gen::@3 to sin16s_gen::@1 [phi:sin16s_gen::@3->sin16s_gen::@1] + //SEG346 [170] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@3->sin16s_gen::@1#0] -- register_copy + //SEG347 [170] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@3->sin16s_gen::@1#1] -- register_copy + //SEG348 [170] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@3->sin16s_gen::@1#2] -- register_copy + //SEG349 sin16s_gen::@1 b1: - //SEG347 [169] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 + //SEG350 [171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -8737,19 +8791,19 @@ sin16s_gen: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG348 [170] call sin16s + //SEG351 [172] call sin16s jsr sin16s - //SEG349 [171] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG350 sin16s_gen::@3 - //SEG351 [172] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 - //SEG352 [173] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 + //SEG352 [173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG353 sin16s_gen::@3 + //SEG354 [174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 + //SEG355 [175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 -- _deref_pwsz1=vwsz2 ldy #0 lda _1 sta (sintab),y iny lda _1+1 sta (sintab),y - //SEG353 [174] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG356 [176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -8757,7 +8811,7 @@ sin16s_gen: { bcc !+ inc sintab+1 !: - //SEG354 [175] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG357 [177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8771,12 +8825,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG355 [176] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 + //SEG358 [178] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG356 [177] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG359 [179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -8785,11 +8839,11 @@ sin16s_gen: { cmp #PI_u4f28>>$10 bcc b4 @@ -8825,8 +8879,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG363 [181] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG364 [181] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG366 [183] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG367 [183] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG365 [181] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG368 [183] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG366 [181] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG369 [183] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG367 [181] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG370 [183] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG368 [181] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG369 sin16s::@1 + //SEG371 [183] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG372 sin16s::@1 b1: - //SEG370 [182] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG373 [184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2 @@ -8871,8 +8925,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG373 [184] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG374 [184] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG375 sin16s::@2 + //SEG376 [186] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG377 [186] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG378 sin16s::@2 b2: - //SEG376 [185] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 + //SEG379 [187] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _4 @@ -8899,71 +8953,71 @@ sin16s: { rol _4+3 dey bne !- - //SEG377 [186] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG380 [188] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG378 [187] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG381 [189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG379 [188] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG382 [190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG380 [189] call mulu16_sel - //SEG381 [117] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG382 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG383 [191] call mulu16_sel + //SEG384 [119] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG385 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG383 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG384 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG386 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG387 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG385 [190] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG388 [192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG386 sin16s::@7 - //SEG387 [191] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - //SEG388 [192] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG389 [193] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG389 sin16s::@7 + //SEG390 [193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + //SEG391 [194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG392 [195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG390 [194] call mulu16_sel - //SEG391 [117] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] - //SEG392 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG393 [196] call mulu16_sel + //SEG394 [119] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG395 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG393 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG394 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG396 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG397 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG395 [195] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG398 [197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG396 sin16s::@8 - //SEG397 [196] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG398 [197] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG399 [198] call mulu16_sel - //SEG400 [117] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG401 [117] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG399 sin16s::@8 + //SEG400 [198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG401 [199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG402 [200] call mulu16_sel + //SEG403 [119] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG404 [119] phi (byte) mulu16_sel::select#10 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG402 [117] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG405 [119] phi (word) mulu16_sel::v2#10 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG403 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG406 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG404 [199] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 - //SEG405 sin16s::@9 - //SEG406 [200] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 - //SEG407 [201] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG407 [201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 + //SEG408 sin16s::@9 + //SEG409 [202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 + //SEG410 [203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8971,43 +9025,43 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG408 [202] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG409 [203] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG411 [204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG412 [205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG410 [204] call mulu16_sel - //SEG411 [117] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG412 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG413 [206] call mulu16_sel + //SEG414 [119] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG415 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG413 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG414 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG416 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG417 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG415 [205] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 + //SEG418 [207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 -- vwuz1=vwuz2 lda mulu16_sel.return_17 sta mulu16_sel.return lda mulu16_sel.return_17+1 sta mulu16_sel.return+1 - //SEG416 sin16s::@10 - //SEG417 [206] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 - //SEG418 [207] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG419 [208] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG419 sin16s::@10 + //SEG420 [208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 + //SEG421 [209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG422 [210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG420 [209] call mulu16_sel - //SEG421 [117] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG422 [117] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG423 [211] call mulu16_sel + //SEG424 [119] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG425 [119] phi (byte) mulu16_sel::select#10 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG423 [117] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG424 [117] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG426 [119] phi (word) mulu16_sel::v2#10 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG427 [119] phi (word) mulu16_sel::v1#10 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG425 [210] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 - //SEG426 sin16s::@11 - //SEG427 [211] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 - //SEG428 [212] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + //SEG428 [212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 + //SEG429 sin16s::@11 + //SEG430 [213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 + //SEG431 [214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr x5_128+1 ror x5_128 lsr x5_128+1 @@ -9016,7 +9070,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG429 [213] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG432 [215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -9024,12 +9078,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG430 [214] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG433 [216] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG431 sin16s::@6 - //SEG432 [215] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG434 sin16s::@6 + //SEG435 [217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc sinx @@ -9037,16 +9091,16 @@ sin16s: { lda #0 sbc sinx+1 sta sinx+1 - //SEG433 [216] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] - //SEG434 [216] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG435 sin16s::@3 + //SEG436 [218] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG437 [218] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG438 sin16s::@3 b3: - //SEG436 sin16s::@return - //SEG437 [217] return + //SEG439 sin16s::@return + //SEG440 [219] return rts - //SEG438 sin16s::@12 - //SEG439 [218] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG441 sin16s::@12 + //SEG442 [220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG440 File Data +//SEG443 File Data print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgen16b.sym b/src/test/ref/sinusgen16b.sym index a5afb77f1..f105be4ff 100644 --- a/src/test/ref/sinusgen16b.sym +++ b/src/test/ref/sinusgen16b.sym @@ -159,25 +159,23 @@ (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0 -(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0 -(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0 +(byte) print_byte::b#0 b zp ZP_BYTE:12 4.0 +(byte) print_byte::b#1 b zp ZP_BYTE:12 4.0 +(byte) print_byte::b#2 b zp ZP_BYTE:12 2.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#3 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#4 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:11 101.0 -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:11 1.1176470588235294 -(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:11 32.7 -(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:11 5.0 -(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:11 2.0 -(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:11 2.0 -(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:11 6.5 -(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:11 8.25 -(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:11 24.0 +(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 101.0 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:10 0.7083333333333334 +(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:10 32.7 +(byte*) print_char_cursor#35 print_char_cursor zp ZP_WORD:10 6.0 +(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:10 5.200000000000001 +(byte*) print_char_cursor#52 print_char_cursor zp ZP_WORD:10 8.25 +(byte*) print_char_cursor#54 print_char_cursor zp ZP_WORD:10 24.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -201,11 +199,12 @@ (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:8 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:8 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:8 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:8 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -345,10 +344,10 @@ zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:4 [ main::st2#2 main::st2#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:6 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -zp ZP_WORD:8 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 print_word::w#0 ] -zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ] +zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ] +reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:10 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ] +zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] zp ZP_DWORD:15 [ sin16s_genb::x#2 sin16s_genb::x#1 ] zp ZP_WORD:19 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ] diff --git a/src/test/ref/sinusgenscale8.asm b/src/test/ref/sinusgenscale8.asm index 67b0eecf2..7f14d73fe 100644 --- a/src/test/ref/sinusgenscale8.asm +++ b/src/test/ref/sinusgenscale8.asm @@ -7,7 +7,7 @@ .const PI_u4f12 = $3244 // PI/2 in u[4.12] format .const PI_HALF_u4f12 = $1922 - .label print_char_cursor = $f + .label print_char_cursor = $b .label print_line_cursor = 8 main: { .label tabsize = $14 @@ -241,9 +241,9 @@ print_char: { rts } // Print a zero-terminated string -// print_str(byte* zeropage($b) str) +// print_str(byte* zeropage($d) str) print_str: { - .label str = $b + .label str = $d b1: ldy #0 lda (str),y @@ -265,11 +265,17 @@ print_str: { jmp b1 } // Print a signed word as HEX -// print_sword(signed word zeropage($d) w) +// print_sword(signed word zeropage($f) w) print_sword: { - .label w = $d + .label w = $f lda w+1 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_word + rts + b1: lda #'-' jsr print_char sec @@ -279,14 +285,12 @@ print_sword: { lda #0 sbc w+1 sta w+1 - b1: - jsr print_word - rts + jmp b2 } // Print a word as HEX -// print_word(word zeropage($d) w) +// print_word(word zeropage($f) w) print_word: { - .label w = $d + .label w = $f lda w+1 sta print_byte.b jsr print_byte diff --git a/src/test/ref/sinusgenscale8.cfg b/src/test/ref/sinusgenscale8.cfg index dea70c88e..c319abc43 100644 --- a/src/test/ref/sinusgenscale8.cfg +++ b/src/test/ref/sinusgenscale8.cfg @@ -86,7 +86,7 @@ sin8u_table::@14: scope:[sin8u_table] from sin8u_table::@13 [43] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21 [44] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 [45] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 - [46] (byte*~) print_char_cursor#113 ← (byte*) print_line_cursor#1 + [46] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 [47] call print_str to:sin8u_table::@15 sin8u_table::@15: scope:[sin8u_table] from sin8u_table::@14 @@ -135,41 +135,41 @@ print_ln: scope:[print_ln] from sin8u_table::@12 sin8u_table::@22 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [69] (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#1 ) [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 - [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 + [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [72] return to:@return print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 sin8u_table::@11 sin8u_table::@21 sin8u_table::@5 sin8u_table::@7 sin8u_table::@9 - [73] (byte*) print_char_cursor#100 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#99 print_word::@1/(byte*) print_char_cursor#18 sin8u_table::@9/(byte*) print_char_cursor#2 sin8u_table::@11/(byte*) print_char_cursor#2 sin8u_table::@21/(byte*) print_char_cursor#2 sin8u_table::@5/(byte*) print_char_cursor#2 sin8u_table::@7/(byte*) print_char_cursor#2 ) + [73] (byte*) print_char_cursor#103 ← phi( print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#102 print_word::@1/(byte*) print_char_cursor#19 sin8u_table::@9/(byte*) print_char_cursor#2 sin8u_table::@11/(byte*) print_char_cursor#2 sin8u_table::@21/(byte*) print_char_cursor#2 sin8u_table::@5/(byte*) print_char_cursor#2 sin8u_table::@7/(byte*) print_char_cursor#2 ) [73] (byte) print_byte::b#8 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@9/(const byte) sin8u_table::amplitude#0 sin8u_table::@11/(const byte) sin8u_table::mid#0 sin8u_table::@21/(byte) print_byte::b#7 sin8u_table::@5/(const byte) sin8u_table::min#0 sin8u_table::@7/(const byte) sin8u_table::max#0 ) [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 - [75] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [75] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [76] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f - [78] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [78] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [79] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 [80] return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - [81] (byte*) print_char_cursor#64 ← phi( print_byte/(byte*) print_char_cursor#100 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#2 print_sbyte::@3/(byte*) print_char_cursor#2 print_sword::@2/(byte*) print_char_cursor#2 ) - [81] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) - [82] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 - [83] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + [81] (byte*) print_char_cursor#66 ← phi( print_byte/(byte*) print_char_cursor#103 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#2 print_sbyte::@3/(byte*) print_char_cursor#2 print_sword::@1/(byte*) print_char_cursor#2 print_sword::@3/(byte*) print_char_cursor#2 ) + [81] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 + [83] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#66 to:print_char::@return print_char::@return: scope:[print_char] from print_char [84] return to:@return print_str: scope:[print_str] from sin8u_table::@10 sin8u_table::@14 sin8u_table::@16 sin8u_table::@18 sin8u_table::@2 sin8u_table::@20 sin8u_table::@4 sin8u_table::@6 sin8u_table::@8 - [85] (byte*) print_char_cursor#105 ← phi( sin8u_table::@10/(byte*) print_char_cursor#18 sin8u_table::@14/(byte*~) print_char_cursor#113 sin8u_table::@16/(byte*) print_char_cursor#18 sin8u_table::@18/(byte*) print_char_cursor#18 sin8u_table::@20/(byte*) print_char_cursor#18 sin8u_table::@2/(byte*) 1024 sin8u_table::@4/(byte*) print_char_cursor#18 sin8u_table::@6/(byte*) print_char_cursor#18 sin8u_table::@8/(byte*) print_char_cursor#18 ) + [85] (byte*) print_char_cursor#108 ← phi( sin8u_table::@10/(byte*) print_char_cursor#19 sin8u_table::@14/(byte*~) print_char_cursor#116 sin8u_table::@16/(byte*) print_char_cursor#19 sin8u_table::@18/(byte*) print_char_cursor#19 sin8u_table::@20/(byte*) print_char_cursor#19 sin8u_table::@2/(byte*) 1024 sin8u_table::@4/(byte*) print_char_cursor#19 sin8u_table::@6/(byte*) print_char_cursor#19 sin8u_table::@8/(byte*) print_char_cursor#19 ) [85] (byte*) print_str::str#12 ← phi( sin8u_table::@10/(const string) sin8u_table::str4 sin8u_table::@14/(const string) sin8u_table::str5 sin8u_table::@16/(const string) sin8u_table::str6 sin8u_table::@18/(const string) sin8u_table::str7 sin8u_table::@20/(const string) sin8u_table::str8 sin8u_table::@2/(const string) sin8u_table::str sin8u_table::@4/(const string) sin8u_table::str1 sin8u_table::@6/(const string) sin8u_table::str2 sin8u_table::@8/(const string) sin8u_table::str3 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [86] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#105 print_str::@2/(byte*) print_char_cursor#1 ) + [86] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#108 print_str::@2/(byte*) print_char_cursor#1 ) [86] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#12 print_str::@2/(byte*) print_str::str#0 ) [87] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -182,252 +182,255 @@ print_str::@2: scope:[print_str] from print_str::@1 [91] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 to:print_str::@1 print_sword: scope:[print_sword] from sin8u_table::@19 - [92] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [93] phi() [94] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [96] (byte*) print_char_cursor#94 ← phi( print_sword/(byte*) print_char_cursor#2 print_sword::@3/(byte*) print_char_cursor#18 ) - [96] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [98] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [95] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [97] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [99] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [98] return to:@return -print_word: scope:[print_word] from print_sword::@1 sin8u_table::@15 sin8u_table::@3 - [100] (byte*) print_char_cursor#99 ← phi( print_sword::@1/(byte*) print_char_cursor#94 sin8u_table::@15/(byte*) print_char_cursor#2 sin8u_table::@3/(byte*) print_char_cursor#2 ) - [100] (word) print_word::w#3 ← phi( print_sword::@1/(word) print_word::w#0 sin8u_table::@15/(word) print_word::w#2 sin8u_table::@3/(word) print_word::w#1 ) - [101] (byte) print_byte::b#1 ← > (word) print_word::w#3 - [102] call print_byte +print_sword::@1: scope:[print_sword] from print_sword + [99] phi() + [100] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 +print_word: scope:[print_word] from print_sword::@2 sin8u_table::@15 sin8u_table::@3 + [102] (byte*) print_char_cursor#102 ← phi( print_sword::@2/(byte*) print_char_cursor#19 sin8u_table::@15/(byte*) print_char_cursor#2 sin8u_table::@3/(byte*) print_char_cursor#2 ) + [102] (word) print_word::w#3 ← phi( print_sword::@2/(word) print_word::w#0 sin8u_table::@15/(word) print_word::w#2 sin8u_table::@3/(word) print_word::w#1 ) + [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 + [104] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [103] (byte) print_byte::b#2 ← < (word) print_word::w#3 - [104] call print_byte + [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 + [106] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [105] return + [107] return to:@return print_sbyte: scope:[print_sbyte] from sin8u_table::@17 - [106] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 + [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [107] phi() - [108] call print_char + [109] phi() + [110] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [109] (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#1 ) - [110] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 - [111] call print_byte + [111] (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#1 ) + [112] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 + [113] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [112] return + [114] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [113] phi() - [114] call print_char + [115] phi() + [116] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [115] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 + [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 to:print_sbyte::@2 mul8su: scope:[mul8su] from sin8u_table::@13 - [116] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 - [117] call mul8u - [118] (word) mul8u::return#2 ← (word) mul8u::res#2 + [118] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 + [119] call mul8u + [120] (word) mul8u::return#2 ← (word) mul8u::res#2 to:mul8su::@3 mul8su::@3: scope:[mul8su] from mul8su - [119] (word) mul8su::m#0 ← (word) mul8u::return#2 - [120] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 + [121] (word) mul8su::m#0 ← (word) mul8u::return#2 + [122] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 to:mul8su::@2 mul8su::@2: scope:[mul8su] from mul8su::@3 - [121] (byte~) mul8su::$7 ← > (word) mul8su::m#0 - [122] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 - [123] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 + [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 + [124] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 + [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 to:mul8su::@1 mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@3 - [124] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@3/(word) mul8su::m#0 ) + [126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@3/(word) mul8su::m#0 ) to:mul8su::@return mul8su::@return: scope:[mul8su] from mul8su::@1 - [125] return + [127] return to:@return mul8u: scope:[mul8u] from mul8su mulu8_sel - [126] (byte) mul8u::a#6 ← phi( mul8su/(byte) mul8u::a#1 mulu8_sel/(byte) mul8u::a#2 ) - [126] (word) mul8u::mb#0 ← phi( mul8su/(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) + [128] (byte) mul8u::a#6 ← phi( mul8su/(byte) mul8u::a#1 mulu8_sel/(byte) mul8u::a#2 ) + [128] (word) mul8u::mb#0 ← phi( mul8su/(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [127] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [127] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [127] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [128] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [129] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [129] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [129] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [130] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [129] return + [131] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [130] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [131] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [133] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [132] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [133] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [134] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [135] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [135] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 sin8s: scope:[sin8s] from sin8u_table::@1 - [136] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 + [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 to:sin8s::@5 sin8s::@5: scope:[sin8s] from sin8s - [137] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 + [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 to:sin8s::@1 sin8s::@1: scope:[sin8s] from sin8s sin8s::@5 - [138] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte) 0 sin8s::@5/(byte) 1 ) - [138] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) - [139] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 + [140] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte) 0 sin8s::@5/(byte) 1 ) + [140] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) + [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 to:sin8s::@6 sin8s::@6: scope:[sin8s] from sin8s::@1 - [140] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 + [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 to:sin8s::@2 sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6 - [141] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) - [142] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 - [143] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 - [144] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 - [145] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 - [146] call mulu8_sel - [147] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + [143] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) + [144] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 + [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 + [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 + [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 + [148] call mulu8_sel + [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 to:sin8s::@9 sin8s::@9: scope:[sin8s] from sin8s::@2 - [148] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - [149] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 - [150] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 - [151] call mulu8_sel - [152] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 + [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 + [153] call mulu8_sel + [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 to:sin8s::@10 sin8s::@10: scope:[sin8s] from sin8s::@9 - [153] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 - [154] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 - [155] call mulu8_sel - [156] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 + [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 + [157] call mulu8_sel + [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 to:sin8s::@11 sin8s::@11: scope:[sin8s] from sin8s::@10 - [157] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - [158] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 - [159] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 - [160] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 - [161] call mulu8_sel - [162] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 + [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 + [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 + [163] call mulu8_sel + [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 to:sin8s::@12 sin8s::@12: scope:[sin8s] from sin8s::@11 - [163] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - [164] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 - [165] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 - [166] call mulu8_sel - [167] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 + [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 + [168] call mulu8_sel + [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 to:sin8s::@13 sin8s::@13: scope:[sin8s] from sin8s::@12 - [168] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - [169] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 - [170] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 - [171] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 + [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 + [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 + [173] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 to:sin8s::@7 sin8s::@7: scope:[sin8s] from sin8s::@13 - [172] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 + [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 to:sin8s::@3 sin8s::@3: scope:[sin8s] from sin8s::@13 sin8s::@7 - [173] (byte) sin8s::usinx#4 ← phi( sin8s::@13/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) - [174] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 + [175] (byte) sin8s::usinx#4 ← phi( sin8s::@13/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) + [176] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 to:sin8s::@8 sin8s::@8: scope:[sin8s] from sin8s::@3 - [175] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 + [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 sin8s::@4: scope:[sin8s] from sin8s::@14 sin8s::@8 - [176] (signed byte) sin8s::return#0 ← phi( sin8s::@14/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) + [178] (signed byte) sin8s::return#0 ← phi( sin8s::@14/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) to:sin8s::@return sin8s::@return: scope:[sin8s] from sin8s::@4 - [177] return + [179] return to:@return sin8s::@14: scope:[sin8s] from sin8s::@3 - [178] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 + [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@2 sin8s::@9 - [179] (byte) mulu8_sel::select#5 ← phi( sin8s::@9/(byte) 1 sin8s::@10/(byte) 1 sin8s::@11/(byte) 0 sin8s::@12/(byte) 0 sin8s::@2/(byte) 0 ) - [179] (byte) mulu8_sel::v2#5 ← phi( sin8s::@9/(byte) mulu8_sel::v2#1 sin8s::@10/(const byte) sin8s::DIV_6#0 sin8s::@11/(byte) mulu8_sel::v2#3 sin8s::@12/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) - [179] (byte) mulu8_sel::v1#5 ← phi( sin8s::@9/(byte) mulu8_sel::v1#1 sin8s::@10/(byte) mulu8_sel::v1#2 sin8s::@11/(byte) mulu8_sel::v1#3 sin8s::@12/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) - [180] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - [181] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 - [182] call mul8u - [183] (word) mul8u::return#3 ← (word) mul8u::res#2 + [181] (byte) mulu8_sel::select#5 ← phi( sin8s::@9/(byte) 1 sin8s::@10/(byte) 1 sin8s::@11/(byte) 0 sin8s::@12/(byte) 0 sin8s::@2/(byte) 0 ) + [181] (byte) mulu8_sel::v2#5 ← phi( sin8s::@9/(byte) mulu8_sel::v2#1 sin8s::@10/(const byte) sin8s::DIV_6#0 sin8s::@11/(byte) mulu8_sel::v2#3 sin8s::@12/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) + [181] (byte) mulu8_sel::v1#5 ← phi( sin8s::@9/(byte) mulu8_sel::v1#1 sin8s::@10/(byte) mulu8_sel::v1#2 sin8s::@11/(byte) mulu8_sel::v1#3 sin8s::@12/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) + [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 + [184] call mul8u + [185] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mulu8_sel::@1 mulu8_sel::@1: scope:[mulu8_sel] from mulu8_sel - [184] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - [185] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 - [186] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 + [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 + [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 to:mulu8_sel::@return mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@1 - [187] return + [189] return to:@return div16u: scope:[div16u] from sin8u_table - [188] phi() - [189] call divr16u - [190] (word) divr16u::return#2 ← (word) divr16u::return#0 + [190] phi() + [191] call divr16u + [192] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@1 div16u::@1: scope:[div16u] from div16u - [191] (word) div16u::return#0 ← (word) divr16u::return#2 + [193] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@1 - [192] return + [194] return to:@return divr16u: scope:[divr16u] from div16u - [193] phi() + [195] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [194] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [194] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [194] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) - [194] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 ) - [195] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 - [196] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [197] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [198] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [196] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [196] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [196] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) + [196] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 ) + [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 + [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [200] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [199] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [200] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [201] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 - [202] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [203] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 + [202] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 + [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [204] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [205] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 + [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [206] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [206] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [207] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [208] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [208] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [208] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [210] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@3 - [209] return + [211] return to:@return print_cls: scope:[print_cls] from main - [210] phi() + [212] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [211] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [212] *((byte*) print_cls::sc#2) ← (byte) ' ' - [213] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [214] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [213] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [214] *((byte*) print_cls::sc#2) ← (byte) ' ' + [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [216] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [215] return + [217] return to:@return diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log index 2514c4b90..453db23b8 100644 --- a/src/test/ref/sinusgenscale8.log +++ b/src/test/ref/sinusgenscale8.log @@ -39,6 +39,7 @@ Culled Empty Block (label) print_str::@6 Culled Empty Block (label) @23 Culled Empty Block (label) @24 Culled Empty Block (label) @25 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @26 Culled Empty Block (label) print_sbyte::@4 Culled Empty Block (label) @27 @@ -404,37 +405,37 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@32 print_str: scope:[print_str] from sin8u_table::@11 sin8u_table::@16 sin8u_table::@18 sin8u_table::@20 sin8u_table::@22 sin8u_table::@3 sin8u_table::@5 sin8u_table::@7 sin8u_table::@9 - (byte*) print_char_cursor#105 ← phi( sin8u_table::@11/(byte*) print_char_cursor#32 sin8u_table::@16/(byte*) print_char_cursor#103 sin8u_table::@18/(byte*) print_char_cursor#37 sin8u_table::@20/(byte*) print_char_cursor#39 sin8u_table::@22/(byte*) print_char_cursor#41 sin8u_table::@3/(byte*) print_char_cursor#102 sin8u_table::@5/(byte*) print_char_cursor#26 sin8u_table::@7/(byte*) print_char_cursor#28 sin8u_table::@9/(byte*) print_char_cursor#30 ) + (byte*) print_char_cursor#108 ← phi( sin8u_table::@11/(byte*) print_char_cursor#33 sin8u_table::@16/(byte*) print_char_cursor#106 sin8u_table::@18/(byte*) print_char_cursor#38 sin8u_table::@20/(byte*) print_char_cursor#40 sin8u_table::@22/(byte*) print_char_cursor#42 sin8u_table::@3/(byte*) print_char_cursor#105 sin8u_table::@5/(byte*) print_char_cursor#27 sin8u_table::@7/(byte*) print_char_cursor#29 sin8u_table::@9/(byte*) print_char_cursor#31 ) (byte*) print_str::str#12 ← phi( sin8u_table::@11/(byte*) print_str::str#5 sin8u_table::@16/(byte*) print_str::str#6 sin8u_table::@18/(byte*) print_str::str#7 sin8u_table::@20/(byte*) print_str::str#8 sin8u_table::@22/(byte*) print_str::str#9 sin8u_table::@3/(byte*) print_str::str#1 sin8u_table::@5/(byte*) print_str::str#2 sin8u_table::@7/(byte*) print_str::str#3 sin8u_table::@9/(byte*) print_str::str#4 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#92 ← phi( print_str/(byte*) print_char_cursor#105 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#94 ← phi( print_str/(byte*) print_char_cursor#108 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#12 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#10) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#47 ← phi( print_str::@1/(byte*) print_char_cursor#92 ) + (byte*) print_char_cursor#48 ← phi( print_str::@1/(byte*) print_char_cursor#94 ) (byte*) print_str::str#11 ← phi( print_str::@1/(byte*) print_str::str#10 ) - *((byte*) print_char_cursor#47) ← *((byte*) print_str::str#11) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#47 + *((byte*) print_char_cursor#48) ← *((byte*) print_str::str#11) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#48 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#11 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#48 ← phi( print_str::@1/(byte*) print_char_cursor#92 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#48 + (byte*) print_char_cursor#49 ← phi( print_str::@1/(byte*) print_char_cursor#94 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#49 return to:@return print_ln: scope:[print_ln] from sin8u_table::@13 sin8u_table::@24 - (byte*) print_char_cursor#93 ← phi( sin8u_table::@13/(byte*) print_char_cursor#34 sin8u_table::@24/(byte*) print_char_cursor#43 ) + (byte*) print_char_cursor#95 ← phi( sin8u_table::@13/(byte*) print_char_cursor#35 sin8u_table::@24/(byte*) print_char_cursor#44 ) (byte*) print_line_cursor#23 ← phi( sin8u_table::@13/(byte*) print_line_cursor#25 sin8u_table::@24/(byte*) print_line_cursor#26 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#49 ← phi( print_ln/(byte*) print_char_cursor#93 print_ln::@1/(byte*) print_char_cursor#49 ) + (byte*) print_char_cursor#50 ← phi( print_ln/(byte*) print_char_cursor#95 print_ln::@1/(byte*) print_char_cursor#50 ) (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#12 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#49 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#50 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -442,157 +443,167 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#13 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#50 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) + (byte*) print_char_cursor#51 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) (byte*) print_line_cursor#14 ← phi( print_ln::@2/(byte*) print_line_cursor#13 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#14 - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#50 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#51 return to:@return print_sword: scope:[print_sword] from sin8u_table::@21 - (byte*) print_char_cursor#106 ← phi( sin8u_table::@21/(byte*) print_char_cursor#40 ) + (byte*) print_char_cursor#109 ← phi( sin8u_table::@21/(byte*) print_char_cursor#41 ) (signed word) print_sword::w#2 ← phi( sin8u_table::@21/(signed word) print_sword::w#1 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#94 ← phi( print_sword/(byte*) print_char_cursor#106 print_sword::@4/(byte*) print_char_cursor#6 ) - (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#2 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#3 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#51 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#51 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#2 ) - (byte*) print_char_cursor#95 ← phi( print_sword/(byte*) print_char_cursor#106 ) + (byte*) print_char_cursor#96 ← phi( print_sword/(byte*) print_char_cursor#109 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#4 ← phi( print_sword::@2/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#52 ← phi( print_sword::@2/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#52 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#3 ← phi( print_sword::@1/(signed word) print_sword::w#5 ) + (byte*) print_char_cursor#52 ← phi( print_sword::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#52 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#3 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#53 ← phi( print_sword::@3/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#53 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#7 ← phi( print_sword/(signed word) print_sword::w#2 ) + (byte*) print_char_cursor#97 ← phi( print_sword/(byte*) print_char_cursor#109 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#6 ← phi( print_sword::@3/(signed word) print_sword::w#7 ) + (byte*) print_char_cursor#53 ← phi( print_sword::@3/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#53 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#98 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) + (signed word) print_sword::w#4 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#6 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#4 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#54 ← phi( print_sword::@2/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#54 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#55 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#55 return to:@return print_sbyte: scope:[print_sbyte] from sin8u_table::@19 - (byte*) print_char_cursor#107 ← phi( sin8u_table::@19/(byte*) print_char_cursor#38 ) + (byte*) print_char_cursor#110 ← phi( sin8u_table::@19/(byte*) print_char_cursor#39 ) (signed byte) print_sbyte::b#2 ← phi( sin8u_table::@19/(signed byte) print_sbyte::b#1 ) (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#2 < (number) 0 if((bool~) print_sbyte::$0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@1: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#5 ← phi( print_sbyte/(signed byte) print_sbyte::b#2 ) - (byte*) print_char_cursor#96 ← phi( print_sbyte/(byte*) print_char_cursor#107 ) - (byte) print_char::ch#1 ← (byte) '-' + (byte*) print_char_cursor#99 ← phi( print_sbyte/(byte*) print_char_cursor#110 ) + (byte) print_char::ch#2 ← (byte) '-' call print_char to:print_sbyte::@5 print_sbyte::@5: scope:[print_sbyte] from print_sbyte::@1 (signed byte) print_sbyte::b#3 ← phi( print_sbyte::@1/(signed byte) print_sbyte::b#5 ) - (byte*) print_char_cursor#54 ← phi( print_sbyte::@1/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#54 + (byte*) print_char_cursor#56 ← phi( print_sbyte::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#56 (signed byte~) print_sbyte::$5 ← - (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$5 to:print_sbyte::@2 print_sbyte::@3: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#7 ← phi( print_sbyte/(signed byte) print_sbyte::b#2 ) - (byte*) print_char_cursor#97 ← phi( print_sbyte/(byte*) print_char_cursor#107 ) - (byte) print_char::ch#2 ← (byte) ' ' + (byte*) print_char_cursor#100 ← phi( print_sbyte/(byte*) print_char_cursor#110 ) + (byte) print_char::ch#3 ← (byte) ' ' call print_char to:print_sbyte::@6 print_sbyte::@6: scope:[print_sbyte] from print_sbyte::@3 (signed byte) print_sbyte::b#6 ← phi( print_sbyte::@3/(signed byte) print_sbyte::b#7 ) - (byte*) print_char_cursor#55 ← phi( print_sbyte::@3/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#55 + (byte*) print_char_cursor#57 ← phi( print_sbyte::@3/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#57 to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@5 print_sbyte::@6 - (byte*) print_char_cursor#98 ← phi( print_sbyte::@5/(byte*) print_char_cursor#8 print_sbyte::@6/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#101 ← phi( print_sbyte::@5/(byte*) print_char_cursor#9 print_sbyte::@6/(byte*) print_char_cursor#10 ) (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@6/(signed byte) print_sbyte::b#6 ) (byte~) print_sbyte::$1 ← ((byte)) (signed byte) print_sbyte::b#4 (byte) print_byte::b#0 ← (byte~) print_sbyte::$1 call print_byte to:print_sbyte::@7 print_sbyte::@7: scope:[print_sbyte] from print_sbyte::@2 - (byte*) print_char_cursor#56 ← phi( print_sbyte::@2/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#56 + (byte*) print_char_cursor#58 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#58 to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@7 - (byte*) print_char_cursor#57 ← phi( print_sbyte::@7/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#57 + (byte*) print_char_cursor#59 ← phi( print_sbyte::@7/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#59 return to:@return -print_word: scope:[print_word] from print_sword::@1 sin8u_table::@17 sin8u_table::@4 - (byte*) print_char_cursor#99 ← phi( print_sword::@1/(byte*) print_char_cursor#94 sin8u_table::@17/(byte*) print_char_cursor#36 sin8u_table::@4/(byte*) print_char_cursor#25 ) - (word) print_word::w#3 ← phi( print_sword::@1/(word) print_word::w#0 sin8u_table::@17/(word) print_word::w#2 sin8u_table::@4/(word) print_word::w#1 ) +print_word: scope:[print_word] from print_sword::@2 sin8u_table::@17 sin8u_table::@4 + (byte*) print_char_cursor#102 ← phi( print_sword::@2/(byte*) print_char_cursor#98 sin8u_table::@17/(byte*) print_char_cursor#37 sin8u_table::@4/(byte*) print_char_cursor#26 ) + (word) print_word::w#3 ← phi( print_sword::@2/(word) print_word::w#0 sin8u_table::@17/(word) print_word::w#2 sin8u_table::@4/(word) print_word::w#1 ) (byte~) print_word::$0 ← > (word) print_word::w#3 (byte) print_byte::b#1 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#4 ← phi( print_word/(word) print_word::w#3 ) - (byte*) print_char_cursor#58 ← phi( print_word/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#58 + (byte*) print_char_cursor#60 ← phi( print_word/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#60 (byte~) print_word::$2 ← < (word) print_word::w#4 (byte) print_byte::b#2 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#59 ← phi( print_word::@1/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#59 + (byte*) print_char_cursor#61 ← phi( print_word::@1/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#61 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#60 ← phi( print_word::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#60 + (byte*) print_char_cursor#62 ← phi( print_word::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#62 return to:@return @32: scope:[] from @20 (byte*) print_screen#6 ← phi( @20/(byte*) print_screen#0 ) - (byte*) print_char_cursor#110 ← phi( @20/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#113 ← phi( @20/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#30 ← phi( @20/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@41 print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@23 sin8u_table::@6 sin8u_table::@8 - (byte*) print_char_cursor#100 ← phi( print_sbyte::@2/(byte*) print_char_cursor#98 print_word/(byte*) print_char_cursor#99 print_word::@1/(byte*) print_char_cursor#12 sin8u_table::@10/(byte*) print_char_cursor#31 sin8u_table::@12/(byte*) print_char_cursor#33 sin8u_table::@23/(byte*) print_char_cursor#42 sin8u_table::@6/(byte*) print_char_cursor#27 sin8u_table::@8/(byte*) print_char_cursor#29 ) + (byte*) print_char_cursor#103 ← phi( print_sbyte::@2/(byte*) print_char_cursor#101 print_word/(byte*) print_char_cursor#102 print_word::@1/(byte*) print_char_cursor#13 sin8u_table::@10/(byte*) print_char_cursor#32 sin8u_table::@12/(byte*) print_char_cursor#34 sin8u_table::@23/(byte*) print_char_cursor#43 sin8u_table::@6/(byte*) print_char_cursor#28 sin8u_table::@8/(byte*) print_char_cursor#30 ) (byte) print_byte::b#8 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@10/(byte) print_byte::b#5 sin8u_table::@12/(byte) print_byte::b#6 sin8u_table::@23/(byte) print_byte::b#7 sin8u_table::@6/(byte) print_byte::b#3 sin8u_table::@8/(byte) print_byte::b#4 ) (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (number) 4 - (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#9 ← phi( print_byte/(byte) print_byte::b#8 ) - (byte*) print_char_cursor#61 ← phi( print_byte/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#61 + (byte*) print_char_cursor#63 ← phi( print_byte/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#63 (number~) print_byte::$2 ← (byte) print_byte::b#9 & (number) $f - (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#5 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#62 ← phi( print_byte::@1/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#62 + (byte*) print_char_cursor#64 ← phi( print_byte::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#64 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#63 ← phi( print_byte::@2/(byte*) print_char_cursor#16 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#63 + (byte*) print_char_cursor#65 ← phi( print_byte::@2/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#65 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - (byte*) print_char_cursor#64 ← phi( print_byte/(byte*) print_char_cursor#100 print_byte::@1/(byte*) print_char_cursor#15 print_sbyte::@1/(byte*) print_char_cursor#96 print_sbyte::@3/(byte*) print_char_cursor#97 print_sword::@2/(byte*) print_char_cursor#95 ) - (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) print_char::ch#1 print_sbyte::@3/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 - (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#66 ← phi( print_byte/(byte*) print_char_cursor#103 print_byte::@1/(byte*) print_char_cursor#16 print_sbyte::@1/(byte*) print_char_cursor#99 print_sbyte::@3/(byte*) print_char_cursor#100 print_sword::@1/(byte*) print_char_cursor#96 print_sword::@3/(byte*) print_char_cursor#97 ) + (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) print_char::ch#2 print_sbyte::@3/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 + (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#66 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#65 ← phi( print_char/(byte*) print_char_cursor#18 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#65 + (byte*) print_char_cursor#67 ← phi( print_char/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#67 return to:@return print_cls: scope:[print_cls] from main @@ -611,17 +622,17 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#20 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#21 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#66 ← phi( print_cls::@2/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#68 ← phi( print_cls::@2/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#15 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#15 - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#66 + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#68 return to:@return main: scope:[main] from @41 - (byte*) print_char_cursor#101 ← phi( @41/(byte*) print_char_cursor#104 ) + (byte*) print_char_cursor#104 ← phi( @41/(byte*) print_char_cursor#107 ) (byte*) print_line_cursor#24 ← phi( @41/(byte*) print_line_cursor#27 ) (byte*) print_screen#4 ← phi( @41/(byte*) print_screen#5 ) (word) main::tabsize#0 ← (number) $14 @@ -629,10 +640,10 @@ main: scope:[main] from @41 call print_cls to:main::@1 main::@1: scope:[main] from main - (byte*) print_char_cursor#67 ← phi( main/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#69 ← phi( main/(byte*) print_char_cursor#22 ) (byte*) print_line_cursor#16 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#16 - (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#67 + (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#69 (byte*) sin8u_table::sintab#0 ← (byte[$14]) main::sintab#0 (word) sin8u_table::tabsize#0 ← (word) main::tabsize#0 (byte) sin8u_table::min#0 ← (number) $a @@ -641,21 +652,21 @@ main::@1: scope:[main] from main to:main::@2 main::@2: scope:[main] from main::@1 (byte*) print_line_cursor#17 ← phi( main::@1/(byte*) print_line_cursor#10 ) - (byte*) print_char_cursor#68 ← phi( main::@1/(byte*) print_char_cursor#45 ) - (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#68 + (byte*) print_char_cursor#70 ← phi( main::@1/(byte*) print_char_cursor#46 ) + (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#70 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#17 to:main::@return main::@return: scope:[main] from main::@2 - (byte*) print_char_cursor#69 ← phi( main::@2/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#71 ← phi( main::@2/(byte*) print_char_cursor#24 ) (byte*) print_line_cursor#18 ← phi( main::@2/(byte*) print_line_cursor#6 ) (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#18 - (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#69 + (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#71 return to:@return sin8u_table: scope:[sin8u_table] from main::@1 (byte*) sin8u_table::sintab#26 ← phi( main::@1/(byte*) sin8u_table::sintab#0 ) (byte*) print_line_cursor#49 ← phi( main::@1/(byte*) print_line_cursor#5 ) - (byte*) print_char_cursor#108 ← phi( main::@1/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#111 ← phi( main::@1/(byte*) print_char_cursor#23 ) (word) sin8u_table::tabsize#1 ← phi( main::@1/(word) sin8u_table::tabsize#0 ) (byte) sin8u_table::min#1 ← phi( main::@1/(byte) sin8u_table::min#0 ) (byte) sin8u_table::max#1 ← phi( main::@1/(byte) sin8u_table::max#0 ) @@ -681,7 +692,7 @@ sin8u_table::@3: scope:[sin8u_table] from sin8u_table (byte) sin8u_table::amplitude#19 ← phi( sin8u_table/(byte) sin8u_table::amplitude#0 ) (byte) sin8u_table::max#7 ← phi( sin8u_table/(byte) sin8u_table::max#1 ) (byte) sin8u_table::min#5 ← phi( sin8u_table/(byte) sin8u_table::min#1 ) - (byte*) print_char_cursor#102 ← phi( sin8u_table/(byte*) print_char_cursor#108 ) + (byte*) print_char_cursor#105 ← phi( sin8u_table/(byte*) print_char_cursor#111 ) (word) div16u::return#4 ← phi( sin8u_table/(word) div16u::return#2 ) (word~) sin8u_table::$6 ← (word) div16u::return#4 (word) sin8u_table::step#0 ← (word~) sin8u_table::$6 @@ -697,8 +708,8 @@ sin8u_table::@4: scope:[sin8u_table] from sin8u_table::@3 (byte) sin8u_table::max#6 ← phi( sin8u_table::@3/(byte) sin8u_table::max#7 ) (byte) sin8u_table::min#4 ← phi( sin8u_table::@3/(byte) sin8u_table::min#5 ) (word) sin8u_table::step#1 ← phi( sin8u_table::@3/(word) sin8u_table::step#0 ) - (byte*) print_char_cursor#70 ← phi( sin8u_table::@3/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#70 + (byte*) print_char_cursor#72 ← phi( sin8u_table::@3/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#72 (word) print_word::w#1 ← (word) sin8u_table::step#1 call print_word to:sin8u_table::@5 @@ -711,8 +722,8 @@ sin8u_table::@5: scope:[sin8u_table] from sin8u_table::@4 (byte) sin8u_table::amplitude#14 ← phi( sin8u_table::@4/(byte) sin8u_table::amplitude#17 ) (byte) sin8u_table::max#5 ← phi( sin8u_table::@4/(byte) sin8u_table::max#6 ) (byte) sin8u_table::min#3 ← phi( sin8u_table::@4/(byte) sin8u_table::min#4 ) - (byte*) print_char_cursor#71 ← phi( sin8u_table::@4/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#71 + (byte*) print_char_cursor#73 ← phi( sin8u_table::@4/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#73 (byte*) print_str::str#2 ← (const string) sin8u_table::str1 call print_str to:sin8u_table::@6 @@ -725,8 +736,8 @@ sin8u_table::@6: scope:[sin8u_table] from sin8u_table::@5 (byte) sin8u_table::amplitude#11 ← phi( sin8u_table::@5/(byte) sin8u_table::amplitude#14 ) (byte) sin8u_table::max#4 ← phi( sin8u_table::@5/(byte) sin8u_table::max#5 ) (byte) sin8u_table::min#2 ← phi( sin8u_table::@5/(byte) sin8u_table::min#3 ) - (byte*) print_char_cursor#72 ← phi( sin8u_table::@5/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#72 + (byte*) print_char_cursor#74 ← phi( sin8u_table::@5/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#74 (byte) print_byte::b#3 ← (byte) sin8u_table::min#2 call print_byte to:sin8u_table::@7 @@ -738,8 +749,8 @@ sin8u_table::@7: scope:[sin8u_table] from sin8u_table::@6 (byte) sin8u_table::mid#13 ← phi( sin8u_table::@6/(byte) sin8u_table::mid#15 ) (byte) sin8u_table::amplitude#8 ← phi( sin8u_table::@6/(byte) sin8u_table::amplitude#11 ) (byte) sin8u_table::max#3 ← phi( sin8u_table::@6/(byte) sin8u_table::max#4 ) - (byte*) print_char_cursor#73 ← phi( sin8u_table::@6/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#73 + (byte*) print_char_cursor#75 ← phi( sin8u_table::@6/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#75 (byte*) print_str::str#3 ← (const string) sin8u_table::str2 call print_str to:sin8u_table::@8 @@ -751,8 +762,8 @@ sin8u_table::@8: scope:[sin8u_table] from sin8u_table::@7 (byte) sin8u_table::mid#10 ← phi( sin8u_table::@7/(byte) sin8u_table::mid#13 ) (byte) sin8u_table::amplitude#5 ← phi( sin8u_table::@7/(byte) sin8u_table::amplitude#8 ) (byte) sin8u_table::max#2 ← phi( sin8u_table::@7/(byte) sin8u_table::max#3 ) - (byte*) print_char_cursor#74 ← phi( sin8u_table::@7/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#74 + (byte*) print_char_cursor#76 ← phi( sin8u_table::@7/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#76 (byte) print_byte::b#4 ← (byte) sin8u_table::max#2 call print_byte to:sin8u_table::@9 @@ -763,8 +774,8 @@ sin8u_table::@9: scope:[sin8u_table] from sin8u_table::@8 (byte*) print_line_cursor#35 ← phi( sin8u_table::@8/(byte*) print_line_cursor#37 ) (byte) sin8u_table::mid#7 ← phi( sin8u_table::@8/(byte) sin8u_table::mid#10 ) (byte) sin8u_table::amplitude#3 ← phi( sin8u_table::@8/(byte) sin8u_table::amplitude#5 ) - (byte*) print_char_cursor#75 ← phi( sin8u_table::@8/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#75 + (byte*) print_char_cursor#77 ← phi( sin8u_table::@8/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#77 (byte*) print_str::str#4 ← (const string) sin8u_table::str3 call print_str to:sin8u_table::@10 @@ -775,8 +786,8 @@ sin8u_table::@10: scope:[sin8u_table] from sin8u_table::@9 (byte*) print_line_cursor#33 ← phi( sin8u_table::@9/(byte*) print_line_cursor#35 ) (byte) sin8u_table::mid#5 ← phi( sin8u_table::@9/(byte) sin8u_table::mid#7 ) (byte) sin8u_table::amplitude#1 ← phi( sin8u_table::@9/(byte) sin8u_table::amplitude#3 ) - (byte*) print_char_cursor#76 ← phi( sin8u_table::@9/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#76 + (byte*) print_char_cursor#78 ← phi( sin8u_table::@9/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#78 (byte) print_byte::b#5 ← (byte) sin8u_table::amplitude#1 call print_byte to:sin8u_table::@11 @@ -787,8 +798,8 @@ sin8u_table::@11: scope:[sin8u_table] from sin8u_table::@10 (byte) sin8u_table::amplitude#15 ← phi( sin8u_table::@10/(byte) sin8u_table::amplitude#1 ) (byte*) print_line_cursor#31 ← phi( sin8u_table::@10/(byte*) print_line_cursor#33 ) (byte) sin8u_table::mid#3 ← phi( sin8u_table::@10/(byte) sin8u_table::mid#5 ) - (byte*) print_char_cursor#77 ← phi( sin8u_table::@10/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#77 + (byte*) print_char_cursor#79 ← phi( sin8u_table::@10/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#79 (byte*) print_str::str#5 ← (const string) sin8u_table::str4 call print_str to:sin8u_table::@12 @@ -799,8 +810,8 @@ sin8u_table::@12: scope:[sin8u_table] from sin8u_table::@11 (byte) sin8u_table::amplitude#12 ← phi( sin8u_table::@11/(byte) sin8u_table::amplitude#15 ) (byte*) print_line_cursor#28 ← phi( sin8u_table::@11/(byte*) print_line_cursor#31 ) (byte) sin8u_table::mid#1 ← phi( sin8u_table::@11/(byte) sin8u_table::mid#3 ) - (byte*) print_char_cursor#78 ← phi( sin8u_table::@11/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#78 + (byte*) print_char_cursor#80 ← phi( sin8u_table::@11/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#80 (byte) print_byte::b#6 ← (byte) sin8u_table::mid#1 call print_byte to:sin8u_table::@13 @@ -811,8 +822,8 @@ sin8u_table::@13: scope:[sin8u_table] from sin8u_table::@12 (byte) sin8u_table::mid#11 ← phi( sin8u_table::@12/(byte) sin8u_table::mid#1 ) (byte) sin8u_table::amplitude#9 ← phi( sin8u_table::@12/(byte) sin8u_table::amplitude#12 ) (byte*) print_line_cursor#25 ← phi( sin8u_table::@12/(byte*) print_line_cursor#28 ) - (byte*) print_char_cursor#79 ← phi( sin8u_table::@12/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#79 + (byte*) print_char_cursor#81 ← phi( sin8u_table::@12/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#81 call print_ln to:sin8u_table::@14 sin8u_table::@14: scope:[sin8u_table] from sin8u_table::@13 @@ -821,10 +832,10 @@ sin8u_table::@14: scope:[sin8u_table] from sin8u_table::@13 (byte*) sin8u_table::sintab#5 ← phi( sin8u_table::@13/(byte*) sin8u_table::sintab#7 ) (byte) sin8u_table::mid#8 ← phi( sin8u_table::@13/(byte) sin8u_table::mid#11 ) (byte) sin8u_table::amplitude#6 ← phi( sin8u_table::@13/(byte) sin8u_table::amplitude#9 ) - (byte*) print_char_cursor#80 ← phi( sin8u_table::@13/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#82 ← phi( sin8u_table::@13/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#19 ← phi( sin8u_table::@13/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#19 - (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#80 + (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#82 (word) sin8u_table::x#0 ← (number) 0 (word) sin8u_table::i#0 ← (number) 0 to:sin8u_table::@1 @@ -833,7 +844,7 @@ sin8u_table::@1: scope:[sin8u_table] from sin8u_table::@14 sin8u_table::@25 (word) sin8u_table::i#13 ← phi( sin8u_table::@14/(word) sin8u_table::i#0 sin8u_table::@25/(word) sin8u_table::i#1 ) (word) sin8u_table::step#13 ← phi( sin8u_table::@14/(word) sin8u_table::step#14 sin8u_table::@25/(word) sin8u_table::step#2 ) (byte*) print_line_cursor#48 ← phi( sin8u_table::@14/(byte*) print_line_cursor#8 sin8u_table::@25/(byte*) print_line_cursor#9 ) - (byte*) print_char_cursor#111 ← phi( sin8u_table::@14/(byte*) print_char_cursor#35 sin8u_table::@25/(byte*) print_char_cursor#44 ) + (byte*) print_char_cursor#114 ← phi( sin8u_table::@14/(byte*) print_char_cursor#36 sin8u_table::@25/(byte*) print_char_cursor#45 ) (byte*) sin8u_table::sintab#4 ← phi( sin8u_table::@14/(byte*) sin8u_table::sintab#5 sin8u_table::@25/(byte*) sin8u_table::sintab#6 ) (byte) sin8u_table::mid#6 ← phi( sin8u_table::@14/(byte) sin8u_table::mid#8 sin8u_table::@25/(byte) sin8u_table::mid#9 ) (byte) sin8u_table::amplitude#4 ← phi( sin8u_table::@14/(byte) sin8u_table::amplitude#6 sin8u_table::@25/(byte) sin8u_table::amplitude#7 ) @@ -848,7 +859,7 @@ sin8u_table::@15: scope:[sin8u_table] from sin8u_table::@1 (word) sin8u_table::step#12 ← phi( sin8u_table::@1/(word) sin8u_table::step#13 ) (byte*) print_line_cursor#46 ← phi( sin8u_table::@1/(byte*) print_line_cursor#48 ) (word) sin8u_table::x#7 ← phi( sin8u_table::@1/(word) sin8u_table::x#2 ) - (byte*) print_char_cursor#109 ← phi( sin8u_table::@1/(byte*) print_char_cursor#111 ) + (byte*) print_char_cursor#112 ← phi( sin8u_table::@1/(byte*) print_char_cursor#114 ) (byte*) sin8u_table::sintab#3 ← phi( sin8u_table::@1/(byte*) sin8u_table::sintab#4 ) (byte) sin8u_table::mid#4 ← phi( sin8u_table::@1/(byte) sin8u_table::mid#6 ) (byte) sin8u_table::amplitude#2 ← phi( sin8u_table::@1/(byte) sin8u_table::amplitude#4 ) @@ -869,7 +880,7 @@ sin8u_table::@16: scope:[sin8u_table] from sin8u_table::@15 (byte*) print_line_cursor#44 ← phi( sin8u_table::@15/(byte*) print_line_cursor#46 ) (signed byte) sin8u_table::sinx#4 ← phi( sin8u_table::@15/(signed byte) sin8u_table::sinx#0 ) (word) sin8u_table::x#5 ← phi( sin8u_table::@15/(word) sin8u_table::x#7 ) - (byte*) print_char_cursor#103 ← phi( sin8u_table::@15/(byte*) print_char_cursor#109 ) + (byte*) print_char_cursor#106 ← phi( sin8u_table::@15/(byte*) print_char_cursor#112 ) (byte*) sin8u_table::sintab#2 ← phi( sin8u_table::@15/(byte*) sin8u_table::sintab#3 ) (byte) sin8u_table::mid#2 ← phi( sin8u_table::@15/(byte) sin8u_table::mid#4 ) (signed word) mul8su::return#4 ← phi( sin8u_table::@15/(signed word) mul8su::return#2 ) @@ -895,8 +906,8 @@ sin8u_table::@17: scope:[sin8u_table] from sin8u_table::@16 (signed word) sin8u_table::sinx_sc#5 ← phi( sin8u_table::@16/(signed word) sin8u_table::sinx_sc#0 ) (signed byte) sin8u_table::sinx#3 ← phi( sin8u_table::@16/(signed byte) sin8u_table::sinx#4 ) (word) sin8u_table::x#3 ← phi( sin8u_table::@16/(word) sin8u_table::x#5 ) - (byte*) print_char_cursor#81 ← phi( sin8u_table::@16/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#81 + (byte*) print_char_cursor#83 ← phi( sin8u_table::@16/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#83 (word) print_word::w#2 ← (word) sin8u_table::x#3 call print_word to:sin8u_table::@18 @@ -912,8 +923,8 @@ sin8u_table::@18: scope:[sin8u_table] from sin8u_table::@17 (byte) sin8u_table::sinx_tr#6 ← phi( sin8u_table::@17/(byte) sin8u_table::sinx_tr#7 ) (signed word) sin8u_table::sinx_sc#4 ← phi( sin8u_table::@17/(signed word) sin8u_table::sinx_sc#5 ) (signed byte) sin8u_table::sinx#2 ← phi( sin8u_table::@17/(signed byte) sin8u_table::sinx#3 ) - (byte*) print_char_cursor#82 ← phi( sin8u_table::@17/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#82 + (byte*) print_char_cursor#84 ← phi( sin8u_table::@17/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#84 (byte*) print_str::str#7 ← (const string) sin8u_table::str6 call print_str to:sin8u_table::@19 @@ -929,8 +940,8 @@ sin8u_table::@19: scope:[sin8u_table] from sin8u_table::@18 (byte) sin8u_table::sinx_tr#5 ← phi( sin8u_table::@18/(byte) sin8u_table::sinx_tr#6 ) (signed word) sin8u_table::sinx_sc#3 ← phi( sin8u_table::@18/(signed word) sin8u_table::sinx_sc#4 ) (signed byte) sin8u_table::sinx#1 ← phi( sin8u_table::@18/(signed byte) sin8u_table::sinx#2 ) - (byte*) print_char_cursor#83 ← phi( sin8u_table::@18/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#83 + (byte*) print_char_cursor#85 ← phi( sin8u_table::@18/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#85 (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#1 call print_sbyte to:sin8u_table::@20 @@ -945,8 +956,8 @@ sin8u_table::@20: scope:[sin8u_table] from sin8u_table::@19 (byte*) print_line_cursor#36 ← phi( sin8u_table::@19/(byte*) print_line_cursor#38 ) (byte) sin8u_table::sinx_tr#4 ← phi( sin8u_table::@19/(byte) sin8u_table::sinx_tr#5 ) (signed word) sin8u_table::sinx_sc#2 ← phi( sin8u_table::@19/(signed word) sin8u_table::sinx_sc#3 ) - (byte*) print_char_cursor#84 ← phi( sin8u_table::@19/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#84 + (byte*) print_char_cursor#86 ← phi( sin8u_table::@19/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#86 (byte*) print_str::str#8 ← (const string) sin8u_table::str7 call print_str to:sin8u_table::@21 @@ -961,8 +972,8 @@ sin8u_table::@21: scope:[sin8u_table] from sin8u_table::@20 (byte*) print_line_cursor#34 ← phi( sin8u_table::@20/(byte*) print_line_cursor#36 ) (byte) sin8u_table::sinx_tr#3 ← phi( sin8u_table::@20/(byte) sin8u_table::sinx_tr#4 ) (signed word) sin8u_table::sinx_sc#1 ← phi( sin8u_table::@20/(signed word) sin8u_table::sinx_sc#2 ) - (byte*) print_char_cursor#85 ← phi( sin8u_table::@20/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#85 + (byte*) print_char_cursor#87 ← phi( sin8u_table::@20/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#87 (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#1 call print_sword to:sin8u_table::@22 @@ -976,8 +987,8 @@ sin8u_table::@22: scope:[sin8u_table] from sin8u_table::@21 (word) sin8u_table::x#9 ← phi( sin8u_table::@21/(word) sin8u_table::x#10 ) (byte*) print_line_cursor#32 ← phi( sin8u_table::@21/(byte*) print_line_cursor#34 ) (byte) sin8u_table::sinx_tr#2 ← phi( sin8u_table::@21/(byte) sin8u_table::sinx_tr#3 ) - (byte*) print_char_cursor#86 ← phi( sin8u_table::@21/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#86 + (byte*) print_char_cursor#88 ← phi( sin8u_table::@21/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#88 (byte*) print_str::str#9 ← (const string) sin8u_table::str8 call print_str to:sin8u_table::@23 @@ -991,8 +1002,8 @@ sin8u_table::@23: scope:[sin8u_table] from sin8u_table::@22 (word) sin8u_table::x#8 ← phi( sin8u_table::@22/(word) sin8u_table::x#9 ) (byte*) print_line_cursor#29 ← phi( sin8u_table::@22/(byte*) print_line_cursor#32 ) (byte) sin8u_table::sinx_tr#1 ← phi( sin8u_table::@22/(byte) sin8u_table::sinx_tr#2 ) - (byte*) print_char_cursor#87 ← phi( sin8u_table::@22/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#87 + (byte*) print_char_cursor#89 ← phi( sin8u_table::@22/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#89 (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#1 call print_byte to:sin8u_table::@24 @@ -1005,8 +1016,8 @@ sin8u_table::@24: scope:[sin8u_table] from sin8u_table::@23 (word) sin8u_table::step#3 ← phi( sin8u_table::@23/(word) sin8u_table::step#4 ) (word) sin8u_table::x#6 ← phi( sin8u_table::@23/(word) sin8u_table::x#8 ) (byte*) print_line_cursor#26 ← phi( sin8u_table::@23/(byte*) print_line_cursor#29 ) - (byte*) print_char_cursor#88 ← phi( sin8u_table::@23/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#88 + (byte*) print_char_cursor#90 ← phi( sin8u_table::@23/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#90 call print_ln to:sin8u_table::@25 sin8u_table::@25: scope:[sin8u_table] from sin8u_table::@24 @@ -1017,10 +1028,10 @@ sin8u_table::@25: scope:[sin8u_table] from sin8u_table::@24 (word) sin8u_table::i#2 ← phi( sin8u_table::@24/(word) sin8u_table::i#3 ) (word) sin8u_table::step#2 ← phi( sin8u_table::@24/(word) sin8u_table::step#3 ) (word) sin8u_table::x#4 ← phi( sin8u_table::@24/(word) sin8u_table::x#6 ) - (byte*) print_char_cursor#89 ← phi( sin8u_table::@24/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#91 ← phi( sin8u_table::@24/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#20 ← phi( sin8u_table::@24/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#20 - (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#89 + (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#91 (word~) sin8u_table::$32 ← (word) sin8u_table::x#4 + (word) sin8u_table::step#2 (word) sin8u_table::x#1 ← (word~) sin8u_table::$32 (word) sin8u_table::i#1 ← ++ (word) sin8u_table::i#2 @@ -1029,22 +1040,22 @@ sin8u_table::@25: scope:[sin8u_table] from sin8u_table::@24 to:sin8u_table::@return sin8u_table::@return: scope:[sin8u_table] from sin8u_table::@25 (byte*) print_line_cursor#21 ← phi( sin8u_table::@25/(byte*) print_line_cursor#9 ) - (byte*) print_char_cursor#90 ← phi( sin8u_table::@25/(byte*) print_char_cursor#44 ) - (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#90 + (byte*) print_char_cursor#92 ← phi( sin8u_table::@25/(byte*) print_char_cursor#45 ) + (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#92 (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#21 return to:@return @41: scope:[] from @32 (byte*) print_screen#5 ← phi( @32/(byte*) print_screen#6 ) - (byte*) print_char_cursor#104 ← phi( @32/(byte*) print_char_cursor#110 ) + (byte*) print_char_cursor#107 ← phi( @32/(byte*) print_char_cursor#113 ) (byte*) print_line_cursor#27 ← phi( @32/(byte*) print_line_cursor#30 ) call main to:@42 @42: scope:[] from @41 - (byte*) print_char_cursor#91 ← phi( @41/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#93 ← phi( @41/(byte*) print_char_cursor#25 ) (byte*) print_line_cursor#22 ← phi( @41/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#22 - (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#91 + (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#93 to:@end @end: scope:[] from @42 @@ -1312,6 +1323,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#3 (byte) print_char::ch#4 (byte) print_char::ch#5 +(byte) print_char::ch#6 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -1329,6 +1341,9 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#11 (byte*) print_char_cursor#110 (byte*) print_char_cursor#111 +(byte*) print_char_cursor#112 +(byte*) print_char_cursor#113 +(byte*) print_char_cursor#114 (byte*) print_char_cursor#12 (byte*) print_char_cursor#13 (byte*) print_char_cursor#14 @@ -1543,13 +1558,14 @@ SYMBOL TABLE SSA (byte*) print_str::str#9 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -1558,6 +1574,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#3 (signed word) print_sword::w#4 (signed word) print_sword::w#5 +(signed word) print_sword::w#6 +(signed word) print_sword::w#7 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -1995,7 +2013,7 @@ Inlining cast (byte) mulu8_sel::select#4 ← (unumber)(number) 0 Inlining cast (signed byte~) sin8s::$16 ← (signed byte)(byte) sin8s::usinx#4 Inlining cast (signed byte~) sin8s::$21 ← (signed byte)(byte) sin8s::usinx#6 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#3 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#4 Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#4 Inlining cast (word) main::tabsize#0 ← (unumber)(number) $14 Inlining cast (byte) sin8u_table::min#0 ← (unumber)(number) $a @@ -2113,7 +2131,6 @@ Inversing boolean not [102] (bool~) sin8s::$1 ← (word) sin8s::x#3 < (word) PI_ Inversing boolean not [106] (bool~) sin8s::$3 ← (word) sin8s::x#4 < (word) PI_HALF_u4f12#0 from [105] (bool~) sin8s::$2 ← (word) sin8s::x#4 >= (word) PI_HALF_u4f12#0 Inversing boolean not [164] (bool~) sin8s::$15 ← (byte) sin8s::usinx#1 < (byte) $80 from [163] (bool~) sin8s::$14 ← (byte) sin8s::usinx#1 >= (byte) $80 Inversing boolean not [173] (bool~) sin8s::$18 ← (byte) sin8s::isUpper#2 == (byte) 0 from [172] (bool~) sin8s::$17 ← (byte) sin8s::isUpper#2 != (byte) 0 -Inversing boolean not [227] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (signed byte) 0 from [226] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#6 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#7 @@ -2171,65 +2188,66 @@ Alias (signed byte) sin8s::sinx#1 = (signed byte~) sin8s::$22 Alias (word) mul8u::return#3 = (word) mul8u::return#6 Alias (byte) mulu8_sel::select#5 = (byte) mulu8_sel::select#6 Alias (byte) mulu8_sel::return#12 = (byte) mulu8_sel::return#5 (byte~) mulu8_sel::$2 (byte) mulu8_sel::return#6 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#30 (byte*) print_char_cursor#110 (byte*) print_screen#6 (byte*) print_line_cursor#27 (byte*) print_char_cursor#104 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#30 (byte*) print_char_cursor#113 (byte*) print_screen#6 (byte*) print_line_cursor#27 (byte*) print_char_cursor#107 (byte*) print_screen#5 Alias (byte*) print_str::str#10 = (byte*) print_str::str#11 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#92 (byte*) print_char_cursor#48 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#13 (byte*) print_char_cursor#3 (byte*) print_line_cursor#14 (byte*) print_char_cursor#50 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#53 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#95 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#4 -Alias (byte*) print_char_cursor#52 = (byte*) print_char_cursor#6 +Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#94 (byte*) print_char_cursor#49 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#13 (byte*) print_char_cursor#3 (byte*) print_line_cursor#14 (byte*) print_char_cursor#51 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#96 (byte*) print_char_cursor#97 +Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 +Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#52 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#96 (byte*) print_char_cursor#97 +Alias (byte*) print_char_cursor#53 = (byte*) print_char_cursor#6 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#54 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#55 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 (byte*) print_char_cursor#110 Alias (signed byte) print_sbyte::b#2 = (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#7 (signed byte) print_sbyte::b#6 -Alias (byte*) print_char_cursor#54 = (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#56 = (byte*) print_char_cursor#9 Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#55 = (byte*) print_char_cursor#9 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#57 Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#57 (byte*) print_char_cursor#11 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#59 (byte*) print_char_cursor#12 Alias (byte) print_byte::b#1 = (byte~) print_word::$0 Alias (word) print_word::w#3 = (word) print_word::w#4 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#58 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#60 Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#59 (byte*) print_char_cursor#60 (byte*) print_char_cursor#14 +Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#61 (byte*) print_char_cursor#62 (byte*) print_char_cursor#15 Alias (byte) print_byte::b#8 = (byte) print_byte::b#9 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#62 (byte*) print_char_cursor#63 (byte*) print_char_cursor#17 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#19 -Alias (byte*) print_line_cursor#15 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#20 (byte*) print_char_cursor#66 (byte*) print_line_cursor#4 (byte*) print_char_cursor#21 +Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#65 (byte*) print_char_cursor#18 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#20 +Alias (byte*) print_line_cursor#15 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#21 (byte*) print_char_cursor#68 (byte*) print_line_cursor#4 (byte*) print_char_cursor#22 Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#67 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#68 (byte*) print_char_cursor#69 (byte*) print_char_cursor#24 +Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#69 +Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#70 (byte*) print_char_cursor#71 (byte*) print_char_cursor#25 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#18 (byte*) print_line_cursor#7 Alias (byte) sin8u_table::amplitude#0 = (byte~) sin8u_table::$0 (byte) sin8u_table::amplitude#19 (byte) sin8u_table::amplitude#17 (byte) sin8u_table::amplitude#14 (byte) sin8u_table::amplitude#11 (byte) sin8u_table::amplitude#8 (byte) sin8u_table::amplitude#5 (byte) sin8u_table::amplitude#3 (byte) sin8u_table::amplitude#1 (byte) sin8u_table::amplitude#15 (byte) sin8u_table::amplitude#12 (byte) sin8u_table::amplitude#9 (byte) sin8u_table::amplitude#6 Alias (word) sin8u_table::sum#0 = (word~) sin8u_table::$2 Alias (byte) sin8u_table::mid#0 = (byte~) sin8u_table::$5 (byte) sin8u_table::mid#21 (byte) sin8u_table::mid#19 (byte) sin8u_table::mid#17 (byte) sin8u_table::mid#15 (byte) sin8u_table::mid#13 (byte) sin8u_table::mid#10 (byte) sin8u_table::mid#7 (byte) sin8u_table::mid#5 (byte) sin8u_table::mid#3 (byte) sin8u_table::mid#1 (byte) sin8u_table::mid#11 (byte) sin8u_table::mid#8 Alias (word) div16u::return#2 = (word) div16u::return#4 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#108 +Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#111 Alias (byte) sin8u_table::min#1 = (byte) sin8u_table::min#5 (byte) sin8u_table::min#4 (byte) sin8u_table::min#3 (byte) sin8u_table::min#2 Alias (byte) sin8u_table::max#1 = (byte) sin8u_table::max#7 (byte) sin8u_table::max#6 (byte) sin8u_table::max#5 (byte) sin8u_table::max#4 (byte) sin8u_table::max#3 (byte) sin8u_table::max#2 Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#47 (byte*) print_line_cursor#49 (byte*) print_line_cursor#45 (byte*) print_line_cursor#43 (byte*) print_line_cursor#41 (byte*) print_line_cursor#39 (byte*) print_line_cursor#37 (byte*) print_line_cursor#35 (byte*) print_line_cursor#33 (byte*) print_line_cursor#31 (byte*) print_line_cursor#28 Alias (byte*) sin8u_table::sintab#11 = (byte*) sin8u_table::sintab#25 (byte*) sin8u_table::sintab#26 (byte*) sin8u_table::sintab#24 (byte*) sin8u_table::sintab#23 (byte*) sin8u_table::sintab#21 (byte*) sin8u_table::sintab#19 (byte*) sin8u_table::sintab#17 (byte*) sin8u_table::sintab#15 (byte*) sin8u_table::sintab#13 (byte*) sin8u_table::sintab#9 (byte*) sin8u_table::sintab#7 (byte*) sin8u_table::sintab#5 Alias (word) sin8u_table::tabsize#1 = (word) sin8u_table::tabsize#25 (word) sin8u_table::tabsize#24 (word) sin8u_table::tabsize#23 (word) sin8u_table::tabsize#22 (word) sin8u_table::tabsize#21 (word) sin8u_table::tabsize#20 (word) sin8u_table::tabsize#19 (word) sin8u_table::tabsize#18 (word) sin8u_table::tabsize#17 (word) sin8u_table::tabsize#16 (word) sin8u_table::tabsize#15 (word) sin8u_table::tabsize#14 Alias (word) sin8u_table::step#0 = (word~) sin8u_table::$6 (word) sin8u_table::step#1 (word) sin8u_table::step#23 (word) sin8u_table::step#22 (word) sin8u_table::step#21 (word) sin8u_table::step#20 (word) sin8u_table::step#19 (word) sin8u_table::step#18 (word) sin8u_table::step#17 (word) sin8u_table::step#16 (word) sin8u_table::step#15 (word) sin8u_table::step#14 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#70 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#71 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#72 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#73 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#74 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#75 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#76 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#77 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#78 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#79 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#72 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#73 +Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#74 +Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#75 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#76 +Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#77 +Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#78 +Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#79 +Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#80 +Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#81 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#80 +Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#82 Alias (signed byte) sin8s::return#2 = (signed byte) sin8s::return#4 Alias (byte) sin8u_table::amplitude#10 = (byte) sin8u_table::amplitude#2 (byte) sin8u_table::amplitude#4 (byte) sin8u_table::amplitude#24 (byte) sin8u_table::amplitude#23 (byte) sin8u_table::amplitude#22 (byte) sin8u_table::amplitude#21 (byte) sin8u_table::amplitude#20 (byte) sin8u_table::amplitude#18 (byte) sin8u_table::amplitude#16 (byte) sin8u_table::amplitude#13 (byte) sin8u_table::amplitude#7 Alias (byte) sin8u_table::mid#12 = (byte) sin8u_table::mid#4 (byte) sin8u_table::mid#6 (byte) sin8u_table::mid#2 (byte) sin8u_table::mid#24 (byte) sin8u_table::mid#23 (byte) sin8u_table::mid#22 (byte) sin8u_table::mid#20 (byte) sin8u_table::mid#18 (byte) sin8u_table::mid#16 (byte) sin8u_table::mid#14 (byte) sin8u_table::mid#9 Alias (byte*) sin8u_table::sintab#2 = (byte*) sin8u_table::sintab#3 (byte*) sin8u_table::sintab#4 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#109 (byte*) print_char_cursor#111 +Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#112 (byte*) print_char_cursor#114 Alias (word) sin8u_table::x#10 = (word) sin8u_table::x#7 (word) sin8u_table::x#2 (word) sin8u_table::x#5 (word) sin8u_table::x#3 (word) sin8u_table::x#13 (word) sin8u_table::x#12 (word) sin8u_table::x#11 (word) sin8u_table::x#9 (word) sin8u_table::x#8 (word) sin8u_table::x#6 (word) sin8u_table::x#4 Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#46 (byte*) print_line_cursor#48 (byte*) print_line_cursor#44 (byte*) print_line_cursor#42 (byte*) print_line_cursor#40 (byte*) print_line_cursor#38 (byte*) print_line_cursor#36 (byte*) print_line_cursor#34 (byte*) print_line_cursor#32 (byte*) print_line_cursor#29 Alias (word) sin8u_table::step#10 = (word) sin8u_table::step#12 (word) sin8u_table::step#13 (word) sin8u_table::step#11 (word) sin8u_table::step#9 (word) sin8u_table::step#8 (word) sin8u_table::step#7 (word) sin8u_table::step#6 (word) sin8u_table::step#5 (word) sin8u_table::step#4 (word) sin8u_table::step#3 (word) sin8u_table::step#2 @@ -2241,19 +2259,19 @@ Alias (signed word) mul8su::return#2 = (signed word) mul8su::return#4 Alias (signed word) sin8u_table::sinx_sc#0 = (signed word~) sin8u_table::$20 (signed word) sin8u_table::sinx_sc#5 (signed word) sin8u_table::sinx_sc#4 (signed word) sin8u_table::sinx_sc#3 (signed word) sin8u_table::sinx_sc#2 (signed word) sin8u_table::sinx_sc#1 Alias (byte) sin8u_table::sinx_tr#0 = (byte~) sin8u_table::$22 (byte) sin8u_table::sinx_tr#7 (byte) sin8u_table::sinx_tr#6 (byte) sin8u_table::sinx_tr#5 (byte) sin8u_table::sinx_tr#4 (byte) sin8u_table::sinx_tr#3 (byte) sin8u_table::sinx_tr#2 (byte) sin8u_table::sinx_tr#1 Alias (byte*) sin8u_table::sintab#1 = (byte*) sin8u_table::sintab#22 (byte*) sin8u_table::sintab#20 (byte*) sin8u_table::sintab#18 (byte*) sin8u_table::sintab#16 (byte*) sin8u_table::sintab#14 (byte*) sin8u_table::sintab#12 (byte*) sin8u_table::sintab#10 (byte*) sin8u_table::sintab#8 (byte*) sin8u_table::sintab#6 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#81 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#82 -Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#83 -Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#84 -Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#85 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#86 -Alias (byte*) print_char_cursor#42 = (byte*) print_char_cursor#87 -Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#88 +Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#83 +Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#84 +Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#85 +Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#86 +Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#87 +Alias (byte*) print_char_cursor#42 = (byte*) print_char_cursor#88 +Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#89 +Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#90 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#20 (byte*) print_line_cursor#21 -Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#45 +Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#91 (byte*) print_char_cursor#92 (byte*) print_char_cursor#46 Alias (word) sin8u_table::x#1 = (word~) sin8u_table::$32 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#22 -Alias (byte*) print_char_cursor#46 = (byte*) print_char_cursor#91 +Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#93 Successful SSA optimization Pass2AliasElimination Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3 Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 @@ -2265,7 +2283,7 @@ Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 Alias (byte) sin8s::isUpper#10 = (byte) sin8s::isUpper#3 (byte) sin8s::isUpper#2 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (word) divr16u::divisor#1 -Self Phi Eliminated (byte*) print_char_cursor#49 +Self Phi Eliminated (byte*) print_char_cursor#50 Self Phi Eliminated (byte*) print_line_cursor#15 Self Phi Eliminated (byte) sin8u_table::amplitude#10 Self Phi Eliminated (byte) sin8u_table::mid#12 @@ -2281,67 +2299,69 @@ Identical Phi Values (word) div16u::divisor#1 (word) div16u::divisor#0 Identical Phi Values (signed byte) mul8su::a#1 (signed byte) mul8su::a#0 Identical Phi Values (byte) mul8su::b#1 (byte) mul8su::b#0 Identical Phi Values (word) sin8s::x#3 (word) sin8s::x#2 -Identical Phi Values (byte*) print_char_cursor#49 (byte*) print_char_cursor#93 +Identical Phi Values (byte*) print_char_cursor#50 (byte*) print_char_cursor#95 Identical Phi Values (signed word) print_sword::w#2 (signed word) print_sword::w#1 -Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#40 -Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#52 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#41 +Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#53 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#54 (byte*) print_char_cursor#14 Identical Phi Values (signed byte) print_sbyte::b#2 (signed byte) print_sbyte::b#1 -Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#38 -Identical Phi Values (byte*) print_char_cursor#54 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#55 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#39 +Identical Phi Values (byte*) print_char_cursor#56 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#19 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_screen#1 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#24 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#15 -Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_line_cursor#15 -Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#44 +Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_line_cursor#15 +Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#45 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#10 Identical Phi Values (byte) sin8u_table::max#1 (byte) sin8u_table::max#0 Identical Phi Values (byte) sin8u_table::min#1 (byte) sin8u_table::min#0 Identical Phi Values (word) sin8u_table::tabsize#1 (word) sin8u_table::tabsize#0 -Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#23 Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_line_cursor#16 Identical Phi Values (byte*) sin8u_table::sintab#11 (byte*) sin8u_table::sintab#0 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#16 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_char_cursor#17 Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#36 (byte*) print_line_cursor#1 Identical Phi Values (byte) sin8u_table::amplitude#10 (byte) sin8u_table::amplitude#0 Identical Phi Values (byte) sin8u_table::mid#12 (byte) sin8u_table::mid#0 Identical Phi Values (word) sin8u_table::step#10 (word) sin8u_table::step#0 Identical Phi Values (word) sin8u_table::tabsize#10 (word) sin8u_table::tabsize#1 -Identical Phi Values (byte*) print_char_cursor#36 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#37 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#38 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#39 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#40 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#41 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#42 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#43 (byte*) print_char_cursor#16 +Identical Phi Values (byte*) print_char_cursor#37 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#38 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#39 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#40 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#41 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#42 (byte*) print_char_cursor#54 +Identical Phi Values (byte*) print_char_cursor#43 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#44 (byte*) print_char_cursor#17 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#44 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#17 -Identical Phi Values (byte*) print_char_cursor#46 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_char_cursor#24 Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#93 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#98 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#95 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#98 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) divr16u::$4 [10] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 @@ -2355,13 +2375,13 @@ Simple Condition (bool~) sin8s::$3 [107] if((word) sin8s::x#4<(word) PI_HALF_u4f Simple Condition (bool~) sin8s::$15 [165] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 Simple Condition (bool~) sin8s::$18 [174] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@4 Simple Condition (bool~) print_str::$0 [205] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [218] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [228] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_sbyte::$0 [247] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -Simple Condition (bool~) print_cls::$1 [312] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) sin8u_table::$33 [462] if((word) sin8u_table::i#1<(word) sin8u_table::tabsize#0) goto sin8u_table::@1 +Simple Condition (bool~) print_ln::$1 [218] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [227] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_sbyte::$0 [251] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 +Simple Condition (bool~) print_cls::$1 [316] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) sin8u_table::$33 [466] if((word) sin8u_table::i#1<(word) sin8u_table::tabsize#0) goto sin8u_table::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [322] (byte[$14]) main::sintab#0 ← { fill( $14, 0) } +Constant right-side identified [326] (byte[$14]) main::sintab#0 ← { fill( $14, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 @@ -2380,8 +2400,9 @@ Constant (const byte) mulu8_sel::select#3 = 0 Constant (const byte) mulu8_sel::select#4 = 0 Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const byte) print_char::ch#1 = '-' -Constant (const byte) print_char::ch#2 = ' ' +Constant (const byte) print_char::ch#1 = ' ' +Constant (const byte) print_char::ch#2 = '-' +Constant (const byte) print_char::ch#3 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const word) main::tabsize#0 = $14 Constant (const byte[$14]) main::sintab#0 = { fill( $14, 0) } @@ -2412,7 +2433,7 @@ Constant (const word) div16u::divisor#0 = sin8u_table::tabsize#0 Successful SSA optimization Pass2ConstantIdentification Constant (const word) divr16u::divisor#0 = div16u::divisor#0 Successful SSA optimization Pass2ConstantIdentification -Constant value identified (word)sin8u_table::min#0 in [342] (word~) sin8u_table::$1 ← (word)(const byte) sin8u_table::min#0 +Constant value identified (word)sin8u_table::min#0 in [346] (word~) sin8u_table::$1 ← (word)(const byte) sin8u_table::min#0 Successful SSA optimization Pass2ConstantValues Resolved ranged next value [23] divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value [25] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 @@ -2422,8 +2443,8 @@ Simplifying constant integer cast $10 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $10 Successful SSA optimization PassNFinalizeNumberTypeConversions -Constant right-side identified [142] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 -Constant right-side identified [148] (byte) sin8u_table::amplitude#0 ← (const byte) sin8u_table::max#0 - (const byte) sin8u_table::min#0 +Constant right-side identified [143] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [149] (byte) sin8u_table::amplitude#0 ← (const byte) sin8u_table::max#0 - (const byte) sin8u_table::min#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Constant (const byte) sin8u_table::amplitude#0 = sin8u_table::max#0-sin8u_table::min#0 @@ -2431,21 +2452,21 @@ Constant (const word) sin8u_table::$1 = (word)sin8u_table::min#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) print_byte::b#5 = sin8u_table::amplitude#0 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [147] (word) sin8u_table::sum#0 ← (const word) sin8u_table::$1 + (const byte) sin8u_table::max#0 -Constant right-side identified [172] (byte) mul8su::b#0 ← (const byte) sin8u_table::amplitude#0 + (byte) 1 +Constant right-side identified [148] (word) sin8u_table::sum#0 ← (const word) sin8u_table::$1 + (const byte) sin8u_table::max#0 +Constant right-side identified [173] (byte) mul8su::b#0 ← (const byte) sin8u_table::amplitude#0 + (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) sin8u_table::sum#0 = sin8u_table::$1+sin8u_table::max#0 Constant (const byte) mul8su::b#0 = sin8u_table::amplitude#0+1 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [147] (word~) sin8u_table::$3 ← (const word) sin8u_table::sum#0 / (byte) 2 +Constant right-side identified [148] (word~) sin8u_table::$3 ← (const word) sin8u_table::sum#0 / (byte) 2 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) sin8u_table::$3 = sin8u_table::sum#0/2 Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [147] (word~) sin8u_table::$4 ← (const word) sin8u_table::$3 + (byte) 1 +Constant right-side identified [148] (word~) sin8u_table::$4 ← (const word) sin8u_table::$3 + (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) sin8u_table::$4 = sin8u_table::$3+1 Successful SSA optimization Pass2ConstantIdentification -Constant value identified (byte)sin8u_table::$4 in [148] (byte) sin8u_table::mid#0 ← (byte)(const word) sin8u_table::$4 +Constant value identified (byte)sin8u_table::$4 in [149] (byte) sin8u_table::mid#0 ← (byte)(const word) sin8u_table::$4 Successful SSA optimization Pass2ConstantValues Constant (const byte) sin8u_table::mid#0 = (byte)sin8u_table::$4 Successful SSA optimization Pass2ConstantIdentification @@ -2455,7 +2476,7 @@ Inlining Noop Cast [36] (signed word) mul8su::return#0 ← (signed word)(word) m Inlining Noop Cast [78] (signed byte) sin8s::sinx#0 ← (signed byte)(byte) sin8s::usinx#4 keeping sin8s::usinx#4 Inlining Noop Cast [82] (signed byte~) sin8s::$21 ← (signed byte)(byte) sin8s::usinx#4 keeping sin8s::usinx#4 Successful SSA optimization Pass2NopCastInlining -Inlining Noop Cast [169] (signed word) mul8su::return#2 ← (signed word)(word) mul8su::m#2 keeping mul8su::m#2 +Inlining Noop Cast [170] (signed word) mul8su::return#2 ← (signed word)(word) mul8su::m#2 keeping mul8su::m#2 Successful SSA optimization Pass2NopCastInlining Inlining constant with var siblings (const word) divr16u::quotient#0 Inlining constant with var siblings (const byte) divr16u::i#0 @@ -2486,6 +2507,7 @@ Inlining constant with var siblings (const byte) print_byte::b#6 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte) print_char::ch#2 +Inlining constant with var siblings (const byte) print_char::ch#3 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const word) sin8u_table::x#0 Inlining constant with var siblings (const word) sin8u_table::i#0 @@ -2519,11 +2541,12 @@ Constant inlined print_byte::b#6 = (const byte) sin8u_table::mid#0 Constant inlined print_byte::b#5 = (const byte) sin8u_table::amplitude#0 Constant inlined divr16u::dividend#1 = (const word) PI2_u4f12#0 Constant inlined print_cls::sc#0 = (byte*) 1024 -Constant inlined print_char::ch#2 = (byte) ' ' +Constant inlined print_char::ch#3 = (byte) ' ' +Constant inlined print_char::ch#2 = (byte) '-' Constant inlined mulu8_sel::v2#2 = (const byte) sin8s::DIV_6#0 Constant inlined print_str::str#9 = (const string) sin8u_table::str8 Constant inlined mul8u::res#0 = (byte) 0 -Constant inlined print_char::ch#1 = (byte) '-' +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' Constant inlined print_str::str#4 = (const string) sin8u_table::str3 Constant inlined print_str::str#3 = (const string) sin8u_table::str2 @@ -2546,7 +2569,6 @@ Added new block during phi lifting sin8s::@16(between sin8s::@1 and sin8s::@2) Added new block during phi lifting sin8s::@17(between sin8s::@14 and sin8s::@3) Added new block during phi lifting sin8s::@18(between sin8s::@3 and sin8s::@4) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting sin8u_table::@26(between sin8u_table::@25 and sin8u_table::@1) Adding NOP phi() at start of @begin @@ -2564,7 +2586,7 @@ Adding NOP phi() at start of sin8u_table::@13 Adding NOP phi() at start of sin8u_table::@14 Adding NOP phi() at start of print_ln::@2 Adding NOP phi() at start of print_byte::@2 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_sbyte::@7 Adding NOP phi() at start of mul8u::@3 @@ -2578,7 +2600,7 @@ Calls in [] to main:5 Calls in [main] to print_cls:9 sin8u_table:11 Calls in [sin8u_table] to div16u:15 print_str:18 print_word:22 print_str:24 print_byte:26 print_str:28 print_byte:30 print_str:32 print_byte:34 print_str:36 print_byte:38 print_ln:40 sin8s:44 mul8su:48 print_str:55 print_word:59 print_str:61 print_sbyte:63 print_str:65 print_sword:67 print_str:69 print_byte:73 print_ln:75 Calls in [print_byte] to print_char:96 print_char:101 -Calls in [print_sword] to print_char:121 print_word:129 +Calls in [print_sword] to print_char:121 print_word:127 print_char:131 Calls in [print_word] to print_byte:138 print_byte:142 Calls in [print_sbyte] to print_char:147 print_byte:153 print_char:157 Calls in [mul8su] to mul8u:162 @@ -2586,55 +2608,54 @@ Calls in [sin8s] to mulu8_sel:205 mulu8_sel:212 mulu8_sel:217 mulu8_sel:225 mulu Calls in [mulu8_sel] to mul8u:255 Calls in [div16u] to divr16u:262 -Created 41 initial phi equivalence classes +Created 40 initial phi equivalence classes Coalesced [20] print_word::w#7 ← print_word::w#1 -Coalesced [21] print_char_cursor#126 ← print_char_cursor#2 -Coalesced [23] print_char_cursor#117 ← print_char_cursor#18 -Coalesced [25] print_char_cursor#133 ← print_char_cursor#2 -Coalesced (already) [27] print_char_cursor#118 ← print_char_cursor#18 -Coalesced (already) [29] print_char_cursor#134 ← print_char_cursor#2 -Coalesced (already) [31] print_char_cursor#119 ← print_char_cursor#18 -Coalesced (already) [33] print_char_cursor#130 ← print_char_cursor#2 -Coalesced (already) [35] print_char_cursor#112 ← print_char_cursor#18 -Coalesced (already) [37] print_char_cursor#131 ← print_char_cursor#2 -Not coalescing [54] print_char_cursor#113 ← print_line_cursor#1 +Coalesced [21] print_char_cursor#127 ← print_char_cursor#2 +Coalesced [23] print_char_cursor#120 ← print_char_cursor#19 +Coalesced [25] print_char_cursor#134 ← print_char_cursor#2 +Coalesced (already) [27] print_char_cursor#121 ← print_char_cursor#19 +Coalesced (already) [29] print_char_cursor#135 ← print_char_cursor#2 +Coalesced (already) [31] print_char_cursor#122 ← print_char_cursor#19 +Coalesced (already) [33] print_char_cursor#131 ← print_char_cursor#2 +Coalesced (already) [35] print_char_cursor#115 ← print_char_cursor#19 +Coalesced (already) [37] print_char_cursor#132 ← print_char_cursor#2 +Not coalescing [54] print_char_cursor#116 ← print_line_cursor#1 Coalesced [57] print_word::w#6 ← print_word::w#2 -Coalesced (already) [58] print_char_cursor#125 ← print_char_cursor#2 -Coalesced (already) [60] print_char_cursor#114 ← print_char_cursor#18 -Coalesced (already) [64] print_char_cursor#115 ← print_char_cursor#18 -Coalesced (already) [68] print_char_cursor#116 ← print_char_cursor#18 +Coalesced (already) [58] print_char_cursor#126 ← print_char_cursor#2 +Coalesced (already) [60] print_char_cursor#117 ← print_char_cursor#19 +Coalesced (already) [64] print_char_cursor#118 ← print_char_cursor#19 +Coalesced (already) [68] print_char_cursor#119 ← print_char_cursor#19 Coalesced [71] print_byte::b#13 ← print_byte::b#7 -Coalesced (already) [72] print_char_cursor#132 ← print_char_cursor#2 +Coalesced (already) [72] print_char_cursor#133 ← print_char_cursor#2 Coalesced [74] print_line_cursor#50 ← print_line_cursor#1 Coalesced [80] sin8u_table::x#14 ← sin8u_table::x#1 Coalesced [81] sin8u_table::sintab#27 ← sin8u_table::sintab#1 Coalesced [82] sin8u_table::i#14 ← sin8u_table::i#1 Coalesced [84] print_line_cursor#51 ← print_line_cursor#23 Coalesced (already) [90] print_line_cursor#52 ← print_line_cursor#1 -Coalesced [94] print_char::ch#6 ← print_char::ch#3 -Coalesced [95] print_char_cursor#135 ← print_char_cursor#100 -Coalesced [99] print_char::ch#7 ← print_char::ch#4 -Coalesced [100] print_char_cursor#136 ← print_char_cursor#18 +Coalesced [94] print_char::ch#7 ← print_char::ch#4 +Coalesced [95] print_char_cursor#136 ← print_char_cursor#103 +Coalesced [99] print_char::ch#8 ← print_char::ch#5 +Coalesced [100] print_char_cursor#137 ← print_char_cursor#19 Coalesced [109] print_str::str#13 ← print_str::str#12 -Coalesced (already) [110] print_char_cursor#120 ← print_char_cursor#105 +Coalesced (already) [110] print_char_cursor#123 ← print_char_cursor#108 Coalesced [117] print_str::str#14 ← print_str::str#0 -Coalesced [118] print_char_cursor#121 ← print_char_cursor#1 -Coalesced (already) [120] print_char_cursor#139 ← print_char_cursor#2 -Coalesced [123] print_sword::w#7 ← print_sword::w#0 -Coalesced [124] print_char_cursor#123 ← print_char_cursor#18 -Coalesced [127] print_word::w#5 ← print_word::w#0 -Coalesced (already) [128] print_char_cursor#124 ← print_char_cursor#94 -Coalesced [132] print_sword::w#6 ← print_sword::w#1 -Coalesced (already) [133] print_char_cursor#122 ← print_char_cursor#2 +Coalesced [118] print_char_cursor#124 ← print_char_cursor#1 +Coalesced (already) [120] print_char_cursor#141 ← print_char_cursor#2 +Coalesced [122] print_sword::w#9 ← print_sword::w#1 +Coalesced [125] print_word::w#5 ← print_word::w#0 +Coalesced (already) [126] print_char_cursor#125 ← print_char_cursor#19 +Coalesced (already) [130] print_char_cursor#140 ← print_char_cursor#2 +Coalesced [133] print_sword::w#8 ← print_sword::w#0 Coalesced [136] print_byte::b#11 ← print_byte::b#1 -Coalesced (already) [137] print_char_cursor#128 ← print_char_cursor#99 +Coalesced (already) [137] print_char_cursor#129 ← print_char_cursor#102 Coalesced [140] print_byte::b#12 ← print_byte::b#2 -Coalesced (already) [141] print_char_cursor#129 ← print_char_cursor#18 -Coalesced (already) [146] print_char_cursor#138 ← print_char_cursor#2 +Coalesced (already) [141] print_char_cursor#130 ← print_char_cursor#19 +Coalesced (already) [146] print_char_cursor#139 ← print_char_cursor#2 Coalesced [148] print_sbyte::b#9 ← print_sbyte::b#1 Coalesced [151] print_byte::b#10 ← print_byte::b#0 -Coalesced (already) [152] print_char_cursor#127 ← print_char_cursor#18 -Coalesced (already) [156] print_char_cursor#137 ← print_char_cursor#2 +Coalesced (already) [152] print_char_cursor#128 ← print_char_cursor#19 +Coalesced (already) [156] print_char_cursor#138 ← print_char_cursor#2 Coalesced [159] print_sbyte::b#8 ← print_sbyte::b#0 Coalesced [161] mul8u::a#8 ← mul8u::a#1 Coalesced [169] mul8su::m#4 ← mul8su::m#1 @@ -2686,8 +2707,8 @@ Culled Empty Block (label) sin8u_table::@26 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_byte::@2 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_sbyte::@6 Culled Empty Block (label) print_sbyte::@7 @@ -2715,7 +2736,7 @@ Renumbering block sin8s::@13 to sin8s::@12 Renumbering block sin8s::@14 to sin8s::@13 Renumbering block sin8s::@18 to sin8s::@14 Renumbering block mulu8_sel::@2 to mulu8_sel::@1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block print_sbyte::@5 to print_sbyte::@4 Renumbering block sin8u_table::@3 to sin8u_table::@2 Renumbering block sin8u_table::@4 to sin8u_table::@3 @@ -2758,7 +2779,8 @@ Adding NOP phi() at start of sin8u_table::@16 Adding NOP phi() at start of sin8u_table::@18 Adding NOP phi() at start of sin8u_table::@20 Adding NOP phi() at start of sin8u_table::@22 -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of print_sbyte::@3 Adding NOP phi() at start of print_sbyte::@1 Adding NOP phi() at start of div16u @@ -2854,7 +2876,7 @@ sin8u_table::@14: scope:[sin8u_table] from sin8u_table::@13 [43] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21 [44] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 [45] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2 - [46] (byte*~) print_char_cursor#113 ← (byte*) print_line_cursor#1 + [46] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 [47] call print_str to:sin8u_table::@15 sin8u_table::@15: scope:[sin8u_table] from sin8u_table::@14 @@ -2903,41 +2925,41 @@ print_ln: scope:[print_ln] from sin8u_table::@12 sin8u_table::@22 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [69] (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#1 ) [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 - [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 + [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [72] return to:@return print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 sin8u_table::@11 sin8u_table::@21 sin8u_table::@5 sin8u_table::@7 sin8u_table::@9 - [73] (byte*) print_char_cursor#100 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#99 print_word::@1/(byte*) print_char_cursor#18 sin8u_table::@9/(byte*) print_char_cursor#2 sin8u_table::@11/(byte*) print_char_cursor#2 sin8u_table::@21/(byte*) print_char_cursor#2 sin8u_table::@5/(byte*) print_char_cursor#2 sin8u_table::@7/(byte*) print_char_cursor#2 ) + [73] (byte*) print_char_cursor#103 ← phi( print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#102 print_word::@1/(byte*) print_char_cursor#19 sin8u_table::@9/(byte*) print_char_cursor#2 sin8u_table::@11/(byte*) print_char_cursor#2 sin8u_table::@21/(byte*) print_char_cursor#2 sin8u_table::@5/(byte*) print_char_cursor#2 sin8u_table::@7/(byte*) print_char_cursor#2 ) [73] (byte) print_byte::b#8 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@9/(const byte) sin8u_table::amplitude#0 sin8u_table::@11/(const byte) sin8u_table::mid#0 sin8u_table::@21/(byte) print_byte::b#7 sin8u_table::@5/(const byte) sin8u_table::min#0 sin8u_table::@7/(const byte) sin8u_table::max#0 ) [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 - [75] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [75] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [76] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f - [78] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [78] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [79] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 [80] return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - [81] (byte*) print_char_cursor#64 ← phi( print_byte/(byte*) print_char_cursor#100 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#2 print_sbyte::@3/(byte*) print_char_cursor#2 print_sword::@2/(byte*) print_char_cursor#2 ) - [81] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) - [82] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 - [83] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + [81] (byte*) print_char_cursor#66 ← phi( print_byte/(byte*) print_char_cursor#103 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#2 print_sbyte::@3/(byte*) print_char_cursor#2 print_sword::@1/(byte*) print_char_cursor#2 print_sword::@3/(byte*) print_char_cursor#2 ) + [81] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 + [83] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#66 to:print_char::@return print_char::@return: scope:[print_char] from print_char [84] return to:@return print_str: scope:[print_str] from sin8u_table::@10 sin8u_table::@14 sin8u_table::@16 sin8u_table::@18 sin8u_table::@2 sin8u_table::@20 sin8u_table::@4 sin8u_table::@6 sin8u_table::@8 - [85] (byte*) print_char_cursor#105 ← phi( sin8u_table::@10/(byte*) print_char_cursor#18 sin8u_table::@14/(byte*~) print_char_cursor#113 sin8u_table::@16/(byte*) print_char_cursor#18 sin8u_table::@18/(byte*) print_char_cursor#18 sin8u_table::@20/(byte*) print_char_cursor#18 sin8u_table::@2/(byte*) 1024 sin8u_table::@4/(byte*) print_char_cursor#18 sin8u_table::@6/(byte*) print_char_cursor#18 sin8u_table::@8/(byte*) print_char_cursor#18 ) + [85] (byte*) print_char_cursor#108 ← phi( sin8u_table::@10/(byte*) print_char_cursor#19 sin8u_table::@14/(byte*~) print_char_cursor#116 sin8u_table::@16/(byte*) print_char_cursor#19 sin8u_table::@18/(byte*) print_char_cursor#19 sin8u_table::@20/(byte*) print_char_cursor#19 sin8u_table::@2/(byte*) 1024 sin8u_table::@4/(byte*) print_char_cursor#19 sin8u_table::@6/(byte*) print_char_cursor#19 sin8u_table::@8/(byte*) print_char_cursor#19 ) [85] (byte*) print_str::str#12 ← phi( sin8u_table::@10/(const string) sin8u_table::str4 sin8u_table::@14/(const string) sin8u_table::str5 sin8u_table::@16/(const string) sin8u_table::str6 sin8u_table::@18/(const string) sin8u_table::str7 sin8u_table::@20/(const string) sin8u_table::str8 sin8u_table::@2/(const string) sin8u_table::str sin8u_table::@4/(const string) sin8u_table::str1 sin8u_table::@6/(const string) sin8u_table::str2 sin8u_table::@8/(const string) sin8u_table::str3 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [86] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#105 print_str::@2/(byte*) print_char_cursor#1 ) + [86] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#108 print_str::@2/(byte*) print_char_cursor#1 ) [86] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#12 print_str::@2/(byte*) print_str::str#0 ) [87] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -2950,254 +2972,257 @@ print_str::@2: scope:[print_str] from print_str::@1 [91] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 to:print_str::@1 print_sword: scope:[print_sword] from sin8u_table::@19 - [92] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [93] phi() [94] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [96] (byte*) print_char_cursor#94 ← phi( print_sword/(byte*) print_char_cursor#2 print_sword::@3/(byte*) print_char_cursor#18 ) - [96] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [98] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [95] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [97] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [99] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [98] return to:@return -print_word: scope:[print_word] from print_sword::@1 sin8u_table::@15 sin8u_table::@3 - [100] (byte*) print_char_cursor#99 ← phi( print_sword::@1/(byte*) print_char_cursor#94 sin8u_table::@15/(byte*) print_char_cursor#2 sin8u_table::@3/(byte*) print_char_cursor#2 ) - [100] (word) print_word::w#3 ← phi( print_sword::@1/(word) print_word::w#0 sin8u_table::@15/(word) print_word::w#2 sin8u_table::@3/(word) print_word::w#1 ) - [101] (byte) print_byte::b#1 ← > (word) print_word::w#3 - [102] call print_byte +print_sword::@1: scope:[print_sword] from print_sword + [99] phi() + [100] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 +print_word: scope:[print_word] from print_sword::@2 sin8u_table::@15 sin8u_table::@3 + [102] (byte*) print_char_cursor#102 ← phi( print_sword::@2/(byte*) print_char_cursor#19 sin8u_table::@15/(byte*) print_char_cursor#2 sin8u_table::@3/(byte*) print_char_cursor#2 ) + [102] (word) print_word::w#3 ← phi( print_sword::@2/(word) print_word::w#0 sin8u_table::@15/(word) print_word::w#2 sin8u_table::@3/(word) print_word::w#1 ) + [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 + [104] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [103] (byte) print_byte::b#2 ← < (word) print_word::w#3 - [104] call print_byte + [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 + [106] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [105] return + [107] return to:@return print_sbyte: scope:[print_sbyte] from sin8u_table::@17 - [106] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 + [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [107] phi() - [108] call print_char + [109] phi() + [110] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [109] (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#1 ) - [110] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 - [111] call print_byte + [111] (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#1 ) + [112] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 + [113] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [112] return + [114] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [113] phi() - [114] call print_char + [115] phi() + [116] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [115] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 + [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 to:print_sbyte::@2 mul8su: scope:[mul8su] from sin8u_table::@13 - [116] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 - [117] call mul8u - [118] (word) mul8u::return#2 ← (word) mul8u::res#2 + [118] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 + [119] call mul8u + [120] (word) mul8u::return#2 ← (word) mul8u::res#2 to:mul8su::@3 mul8su::@3: scope:[mul8su] from mul8su - [119] (word) mul8su::m#0 ← (word) mul8u::return#2 - [120] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 + [121] (word) mul8su::m#0 ← (word) mul8u::return#2 + [122] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 to:mul8su::@2 mul8su::@2: scope:[mul8su] from mul8su::@3 - [121] (byte~) mul8su::$7 ← > (word) mul8su::m#0 - [122] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 - [123] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 + [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 + [124] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 + [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 to:mul8su::@1 mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@3 - [124] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@3/(word) mul8su::m#0 ) + [126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@3/(word) mul8su::m#0 ) to:mul8su::@return mul8su::@return: scope:[mul8su] from mul8su::@1 - [125] return + [127] return to:@return mul8u: scope:[mul8u] from mul8su mulu8_sel - [126] (byte) mul8u::a#6 ← phi( mul8su/(byte) mul8u::a#1 mulu8_sel/(byte) mul8u::a#2 ) - [126] (word) mul8u::mb#0 ← phi( mul8su/(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) + [128] (byte) mul8u::a#6 ← phi( mul8su/(byte) mul8u::a#1 mulu8_sel/(byte) mul8u::a#2 ) + [128] (word) mul8u::mb#0 ← phi( mul8su/(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [127] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [127] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [127] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [128] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [129] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [129] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [129] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [130] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [129] return + [131] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [130] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [131] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [133] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [132] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [133] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [134] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [135] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [135] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 sin8s: scope:[sin8s] from sin8u_table::@1 - [136] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 + [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 to:sin8s::@5 sin8s::@5: scope:[sin8s] from sin8s - [137] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 + [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 to:sin8s::@1 sin8s::@1: scope:[sin8s] from sin8s sin8s::@5 - [138] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte) 0 sin8s::@5/(byte) 1 ) - [138] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) - [139] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 + [140] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte) 0 sin8s::@5/(byte) 1 ) + [140] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) + [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 to:sin8s::@6 sin8s::@6: scope:[sin8s] from sin8s::@1 - [140] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 + [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 to:sin8s::@2 sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6 - [141] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) - [142] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 - [143] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 - [144] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 - [145] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 - [146] call mulu8_sel - [147] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + [143] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) + [144] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 + [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 + [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 + [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 + [148] call mulu8_sel + [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 to:sin8s::@9 sin8s::@9: scope:[sin8s] from sin8s::@2 - [148] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - [149] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 - [150] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 - [151] call mulu8_sel - [152] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 + [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 + [153] call mulu8_sel + [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 to:sin8s::@10 sin8s::@10: scope:[sin8s] from sin8s::@9 - [153] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 - [154] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 - [155] call mulu8_sel - [156] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 + [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 + [157] call mulu8_sel + [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 to:sin8s::@11 sin8s::@11: scope:[sin8s] from sin8s::@10 - [157] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - [158] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 - [159] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 - [160] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 - [161] call mulu8_sel - [162] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 + [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 + [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 + [163] call mulu8_sel + [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 to:sin8s::@12 sin8s::@12: scope:[sin8s] from sin8s::@11 - [163] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - [164] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 - [165] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 - [166] call mulu8_sel - [167] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 + [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 + [168] call mulu8_sel + [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 to:sin8s::@13 sin8s::@13: scope:[sin8s] from sin8s::@12 - [168] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - [169] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 - [170] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 - [171] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 + [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 + [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 + [173] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 to:sin8s::@7 sin8s::@7: scope:[sin8s] from sin8s::@13 - [172] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 + [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 to:sin8s::@3 sin8s::@3: scope:[sin8s] from sin8s::@13 sin8s::@7 - [173] (byte) sin8s::usinx#4 ← phi( sin8s::@13/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) - [174] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 + [175] (byte) sin8s::usinx#4 ← phi( sin8s::@13/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) + [176] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 to:sin8s::@8 sin8s::@8: scope:[sin8s] from sin8s::@3 - [175] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 + [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 sin8s::@4: scope:[sin8s] from sin8s::@14 sin8s::@8 - [176] (signed byte) sin8s::return#0 ← phi( sin8s::@14/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) + [178] (signed byte) sin8s::return#0 ← phi( sin8s::@14/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) to:sin8s::@return sin8s::@return: scope:[sin8s] from sin8s::@4 - [177] return + [179] return to:@return sin8s::@14: scope:[sin8s] from sin8s::@3 - [178] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 + [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@2 sin8s::@9 - [179] (byte) mulu8_sel::select#5 ← phi( sin8s::@9/(byte) 1 sin8s::@10/(byte) 1 sin8s::@11/(byte) 0 sin8s::@12/(byte) 0 sin8s::@2/(byte) 0 ) - [179] (byte) mulu8_sel::v2#5 ← phi( sin8s::@9/(byte) mulu8_sel::v2#1 sin8s::@10/(const byte) sin8s::DIV_6#0 sin8s::@11/(byte) mulu8_sel::v2#3 sin8s::@12/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) - [179] (byte) mulu8_sel::v1#5 ← phi( sin8s::@9/(byte) mulu8_sel::v1#1 sin8s::@10/(byte) mulu8_sel::v1#2 sin8s::@11/(byte) mulu8_sel::v1#3 sin8s::@12/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) - [180] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - [181] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 - [182] call mul8u - [183] (word) mul8u::return#3 ← (word) mul8u::res#2 + [181] (byte) mulu8_sel::select#5 ← phi( sin8s::@9/(byte) 1 sin8s::@10/(byte) 1 sin8s::@11/(byte) 0 sin8s::@12/(byte) 0 sin8s::@2/(byte) 0 ) + [181] (byte) mulu8_sel::v2#5 ← phi( sin8s::@9/(byte) mulu8_sel::v2#1 sin8s::@10/(const byte) sin8s::DIV_6#0 sin8s::@11/(byte) mulu8_sel::v2#3 sin8s::@12/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) + [181] (byte) mulu8_sel::v1#5 ← phi( sin8s::@9/(byte) mulu8_sel::v1#1 sin8s::@10/(byte) mulu8_sel::v1#2 sin8s::@11/(byte) mulu8_sel::v1#3 sin8s::@12/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) + [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 + [184] call mul8u + [185] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mulu8_sel::@1 mulu8_sel::@1: scope:[mulu8_sel] from mulu8_sel - [184] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - [185] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 - [186] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 + [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 + [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 to:mulu8_sel::@return mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@1 - [187] return + [189] return to:@return div16u: scope:[div16u] from sin8u_table - [188] phi() - [189] call divr16u - [190] (word) divr16u::return#2 ← (word) divr16u::return#0 + [190] phi() + [191] call divr16u + [192] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@1 div16u::@1: scope:[div16u] from div16u - [191] (word) div16u::return#0 ← (word) divr16u::return#2 + [193] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@1 - [192] return + [194] return to:@return divr16u: scope:[divr16u] from div16u - [193] phi() + [195] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [194] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [194] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [194] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) - [194] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 ) - [195] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 - [196] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [197] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [198] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [196] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [196] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [196] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) + [196] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 ) + [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 + [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [200] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [199] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [200] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [201] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 - [202] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [203] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 + [202] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 + [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [204] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [205] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 + [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [206] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [206] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [207] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [208] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [208] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [208] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [210] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@3 - [209] return + [211] return to:@return print_cls: scope:[print_cls] from main - [210] phi() + [212] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [211] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [212] *((byte*) print_cls::sc#2) ← (byte) ' ' - [213] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [214] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [213] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [214] *((byte*) print_cls::sc#2) ← (byte) ' ' + [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [216] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [215] return + [217] return to:@return @@ -3306,19 +3331,18 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#8 5.25 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#3 4.0 (byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 6.0 +(byte) print_char::ch#5 4.0 +(byte) print_char::ch#6 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#100 9.0 -(byte*) print_char_cursor#105 54.0 -(byte*~) print_char_cursor#113 22.0 -(byte*) print_char_cursor#18 3.454545454545454 -(byte*) print_char_cursor#2 12.777777777777777 -(byte*) print_char_cursor#64 7.0 -(byte*) print_char_cursor#94 3.0 -(byte*) print_char_cursor#99 8.5 +(byte*) print_char_cursor#102 8.5 +(byte*) print_char_cursor#103 9.0 +(byte*) print_char_cursor#108 54.0 +(byte*~) print_char_cursor#116 22.0 +(byte*) print_char_cursor#19 3.2340425531914887 +(byte*) print_char_cursor#2 12.321428571428571 +(byte*) print_char_cursor#66 8.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -3343,8 +3367,8 @@ VARIABLE REGISTER WEIGHTS (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w (signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 4.25 -(signed word) print_sword::w#3 4.0 +(signed word) print_sword::w#1 2.8333333333333335 +(signed word) print_sword::w#4 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 4.0 @@ -3420,10 +3444,10 @@ Initial phi equivalence classes [ sin8u_table::i#10 sin8u_table::i#1 ] [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +[ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] [ print_str::str#10 print_str::str#12 print_str::str#0 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -[ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] @@ -3485,10 +3509,10 @@ Complete equivalence classes [ sin8u_table::i#10 sin8u_table::i#1 ] [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +[ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] [ print_str::str#10 print_str::str#12 print_str::str#0 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -[ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] @@ -3549,10 +3573,10 @@ Allocated zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] Allocated zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] Allocated zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] Allocated zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -Allocated zp ZP_BYTE:11 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Allocated zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Allocated zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Allocated zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] +Allocated zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Allocated zp ZP_WORD:12 [ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] +Allocated zp ZP_WORD:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Allocated zp ZP_WORD:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Allocated zp ZP_WORD:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] Allocated zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Allocated zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] @@ -3622,7 +3646,7 @@ INITIAL ASM .const PI_u4f12 = $3244 // PI/2 in u[4.12] format .const PI_HALF_u4f12 = $1922 - .label print_char_cursor = $10 + .label print_char_cursor = $c .label print_line_cursor = 8 //SEG3 @begin bbegin: @@ -3644,7 +3668,7 @@ bend: main: { .label tabsize = $14 //SEG11 [5] call print_cls - //SEG12 [210] phi from main to print_cls [phi:main->print_cls] + //SEG12 [212] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -3685,7 +3709,7 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG20 [10] call div16u - //SEG21 [188] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG21 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] div16u_from_sin8u_table: jsr div16u //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 @@ -3704,7 +3728,7 @@ sin8u_table: { //SEG25 [13] call print_str //SEG26 [85] phi from sin8u_table::@2 to print_str [phi:sin8u_table::@2->print_str] print_str_from_b2: - //SEG27 [85] phi (byte*) print_char_cursor#105 = (byte*) 1024 [phi:sin8u_table::@2->print_str#0] -- pbuz1=pbuc1 + //SEG27 [85] phi (byte*) print_char_cursor#108 = (byte*) 1024 [phi:sin8u_table::@2->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -3724,10 +3748,10 @@ sin8u_table: { lda step+1 sta print_word.w+1 //SEG31 [15] call print_word - //SEG32 [100] phi from sin8u_table::@3 to print_word [phi:sin8u_table::@3->print_word] + //SEG32 [102] phi from sin8u_table::@3 to print_word [phi:sin8u_table::@3->print_word] print_word_from_b3: - //SEG33 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@3->print_word#0] -- register_copy - //SEG34 [100] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@3->print_word#1] -- register_copy + //SEG33 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#2 [phi:sin8u_table::@3->print_word#0] -- register_copy + //SEG34 [102] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@3->print_word#1] -- register_copy jsr print_word //SEG35 [16] phi from sin8u_table::@3 to sin8u_table::@4 [phi:sin8u_table::@3->sin8u_table::@4] b4_from_b3: @@ -3737,7 +3761,7 @@ sin8u_table: { //SEG37 [17] call print_str //SEG38 [85] phi from sin8u_table::@4 to print_str [phi:sin8u_table::@4->print_str] print_str_from_b4: - //SEG39 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@4->print_str#0] -- register_copy + //SEG39 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@4->print_str#0] -- register_copy //SEG40 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@4->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b5: - //SEG45 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@5->print_byte#0] -- register_copy + //SEG45 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@5->print_byte#0] -- register_copy //SEG46 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@5->print_byte#1] -- vbuz1=vbuc1 lda #min sta print_byte.b @@ -3765,7 +3789,7 @@ sin8u_table: { //SEG49 [21] call print_str //SEG50 [85] phi from sin8u_table::@6 to print_str [phi:sin8u_table::@6->print_str] print_str_from_b6: - //SEG51 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@6->print_str#0] -- register_copy + //SEG51 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@6->print_str#0] -- register_copy //SEG52 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@6->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b7: - //SEG57 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@7->print_byte#0] -- register_copy + //SEG57 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@7->print_byte#0] -- register_copy //SEG58 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@7->print_byte#1] -- vbuz1=vbuc1 lda #max sta print_byte.b @@ -3793,7 +3817,7 @@ sin8u_table: { //SEG61 [25] call print_str //SEG62 [85] phi from sin8u_table::@8 to print_str [phi:sin8u_table::@8->print_str] print_str_from_b8: - //SEG63 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@8->print_str#0] -- register_copy + //SEG63 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@8->print_str#0] -- register_copy //SEG64 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@8->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b9: - //SEG69 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@9->print_byte#0] -- register_copy + //SEG69 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@9->print_byte#0] -- register_copy //SEG70 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@9->print_byte#1] -- vbuz1=vbuc1 lda #amplitude sta print_byte.b @@ -3821,7 +3845,7 @@ sin8u_table: { //SEG73 [29] call print_str //SEG74 [85] phi from sin8u_table::@10 to print_str [phi:sin8u_table::@10->print_str] print_str_from_b10: - //SEG75 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@10->print_str#0] -- register_copy + //SEG75 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@10->print_str#0] -- register_copy //SEG76 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@10->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b11: - //SEG81 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@11->print_byte#0] -- register_copy + //SEG81 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@11->print_byte#0] -- register_copy //SEG82 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@11->print_byte#1] -- vbuz1=vbuc1 lda #mid sta print_byte.b @@ -3927,7 +3951,7 @@ sin8u_table: { bne !+ inc sintab+1 !: - //SEG110 [46] (byte*~) print_char_cursor#113 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG110 [46] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -3935,7 +3959,7 @@ sin8u_table: { //SEG111 [47] call print_str //SEG112 [85] phi from sin8u_table::@14 to print_str [phi:sin8u_table::@14->print_str] print_str_from_b14: - //SEG113 [85] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#113 [phi:sin8u_table::@14->print_str#0] -- register_copy + //SEG113 [85] phi (byte*) print_char_cursor#108 = (byte*~) print_char_cursor#116 [phi:sin8u_table::@14->print_str#0] -- register_copy //SEG114 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@14->print_str#1] -- pbuz1=pbuc1 lda #print_word] + //SEG118 [102] phi from sin8u_table::@15 to print_word [phi:sin8u_table::@15->print_word] print_word_from_b15: - //SEG119 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@15->print_word#0] -- register_copy - //SEG120 [100] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@15->print_word#1] -- register_copy + //SEG119 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#2 [phi:sin8u_table::@15->print_word#0] -- register_copy + //SEG120 [102] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@15->print_word#1] -- register_copy jsr print_word //SEG121 [50] phi from sin8u_table::@15 to sin8u_table::@16 [phi:sin8u_table::@15->sin8u_table::@16] b16_from_b15: @@ -3964,7 +3988,7 @@ sin8u_table: { //SEG123 [51] call print_str //SEG124 [85] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] print_str_from_b16: - //SEG125 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@16->print_str#0] -- register_copy + //SEG125 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@16->print_str#0] -- register_copy //SEG126 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b18: - //SEG134 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy + //SEG134 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@18->print_str#0] -- register_copy //SEG135 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b20: - //SEG143 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy + //SEG143 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@20->print_str#0] -- register_copy //SEG144 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b21: - //SEG149 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@21->print_byte#0] -- register_copy + //SEG149 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@21->print_byte#0] -- register_copy //SEG150 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@21->print_byte#1] -- register_copy jsr print_byte //SEG151 [62] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] @@ -4099,7 +4123,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG167 [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG167 [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -4128,15 +4152,15 @@ print_byte: { lsr lsr sta _0 - //SEG172 [75] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG172 [75] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch //SEG173 [76] call print_char //SEG174 [81] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG175 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy - //SEG176 [81] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG175 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#103 [phi:print_byte->print_char#0] -- register_copy + //SEG176 [81] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 //SEG177 print_byte::@1 @@ -4145,15 +4169,15 @@ print_byte: { lda #$f and b sta _2 - //SEG179 [78] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG179 [78] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch //SEG180 [79] call print_char //SEG181 [81] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG182 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG183 [81] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG182 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG183 [81] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn //SEG184 print_byte::@return @@ -4166,11 +4190,11 @@ print_byte: { // print_char(byte zeropage($b) ch) print_char: { .label ch = $b - //SEG187 [82] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 + //SEG187 [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG188 [83] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 + //SEG188 [83] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#66 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -4183,13 +4207,13 @@ print_char: { } //SEG191 print_str // Print a zero-terminated string -// print_str(byte* zeropage($c) str) +// print_str(byte* zeropage($e) str) print_str: { - .label str = $c + .label str = $e //SEG192 [86] 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: - //SEG193 [86] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG193 [86] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#108 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG194 [86] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 //SEG195 print_str::@1 @@ -4225,29 +4249,65 @@ print_str: { } //SEG203 print_sword // Print a signed word as HEX -// print_sword(signed word zeropage($e) w) +// print_sword(signed word zeropage($10) w) print_sword: { - .label w = $e - //SEG204 [92] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + .label w = $10 + //SEG204 [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG205 [93] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG206 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG205 [93] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG206 print_sword::@3 + b3: //SEG207 [94] call print_char - //SEG208 [81] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG209 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG210 [81] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG208 [81] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG209 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG210 [81] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG211 [95] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG212 [95] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG213 print_sword::@2 + b2: + //SEG214 [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG215 [97] call print_word + //SEG216 [102] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG217 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG218 [102] phi (word) print_word::w#3 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG219 print_sword::@return + breturn: + //SEG220 [98] return + rts + //SEG221 [99] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG222 print_sword::@1 + b1: + //SEG223 [100] call print_char + //SEG224 [81] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG225 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG226 [81] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG211 print_sword::@3 - b3: - //SEG212 [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG227 print_sword::@4 + b4: + //SEG228 [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -4255,122 +4315,99 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG213 [96] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG214 [96] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG215 [96] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG216 print_sword::@1 - b1: - //SEG217 [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG218 [98] call print_word - //SEG219 [100] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG220 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG221 [100] phi (word) print_word::w#3 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG222 print_sword::@return - breturn: - //SEG223 [99] return - rts + jmp b2_from_b4 } -//SEG224 print_word +//SEG229 print_word // Print a word as HEX // print_word(word zeropage($12) w) print_word: { .label w = $12 - //SEG225 [101] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 + //SEG230 [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG226 [102] call print_byte - //SEG227 [73] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG231 [104] call print_byte + //SEG232 [73] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG228 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy - //SEG229 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG233 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#102 [phi:print_word->print_byte#0] -- register_copy + //SEG234 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG230 print_word::@1 + //SEG235 print_word::@1 b1: - //SEG231 [103] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 + //SEG236 [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG232 [104] call print_byte - //SEG233 [73] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG237 [106] call print_byte + //SEG238 [73] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG234 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG235 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG239 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG240 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG236 print_word::@return + //SEG241 print_word::@return breturn: - //SEG237 [105] return + //SEG242 [107] return rts } -//SEG238 print_sbyte +//SEG243 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage($14) b) print_sbyte: { .label b = $14 - //SEG239 [106] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG244 [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG240 [107] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG245 [109] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG241 print_sbyte::@3 + //SEG246 print_sbyte::@3 b3: - //SEG242 [108] call print_char - //SEG243 [81] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG247 [110] call print_char + //SEG248 [81] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG244 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG245 [81] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG249 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG250 [81] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG246 [109] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG251 [111] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG247 [109] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG252 [111] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG248 print_sbyte::@2 + //SEG253 print_sbyte::@2 b2: - //SEG249 [110] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 -- vbuz1=vbuz2 + //SEG254 [112] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG250 [111] call print_byte - //SEG251 [73] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG255 [113] call print_byte + //SEG256 [73] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG252 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG253 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG257 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG258 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG254 print_sbyte::@return + //SEG259 print_sbyte::@return breturn: - //SEG255 [112] return + //SEG260 [114] return rts - //SEG256 [113] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG261 [115] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG257 print_sbyte::@1 + //SEG262 print_sbyte::@1 b1: - //SEG258 [114] call print_char - //SEG259 [81] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG263 [116] call print_char + //SEG264 [81] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG260 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG261 [81] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG265 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG266 [81] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG262 print_sbyte::@4 + //SEG267 print_sbyte::@4 b4: - //SEG263 [115] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG268 [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -4378,7 +4415,7 @@ print_sbyte: { sta b jmp b2_from_b4 } -//SEG264 mul8su +//SEG269 mul8su // Multiply a signed byte and an unsigned byte (into a signed word) // Fixes offsets introduced by using unsigned multiplication // mul8su(signed byte zeropage($34) a) @@ -4388,63 +4425,63 @@ mul8su: { .label _10 = $3e .label m = $15 .label a = $34 - //SEG265 [116] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 -- vbuz1=vbuz2 + //SEG270 [118] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 -- vbuz1=vbuz2 lda a sta mul8u.a - //SEG266 [117] call mul8u - //SEG267 [126] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG271 [119] call mul8u + //SEG272 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] mul8u_from_mul8su: - //SEG268 [126] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8su->mul8u#0] -- register_copy - //SEG269 [126] phi (word) mul8u::mb#0 = (const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vwuz1=vbuc1 + //SEG273 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8su->mul8u#0] -- register_copy + //SEG274 [128] phi (word) mul8u::mb#0 = (const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vwuz1=vbuc1 lda #b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG270 [118] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG275 [120] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b3 - //SEG271 mul8su::@3 + //SEG276 mul8su::@3 b3: - //SEG272 [119] (word) mul8su::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG277 [121] (word) mul8su::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta m lda mul8u.return+1 sta m+1 - //SEG273 [120] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 -- vbsz1_ge_0_then_la1 + //SEG278 [122] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1_from_b3 jmp b2 - //SEG274 mul8su::@2 + //SEG279 mul8su::@2 b2: - //SEG275 [121] (byte~) mul8su::$7 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 + //SEG280 [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _7 - //SEG276 [122] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 -- vbuz1=vbuz2_minus_vbuc1 + //SEG281 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 -- vbuz1=vbuz2_minus_vbuc1 lax _7 axs #b stx _10 - //SEG277 [123] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG282 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuz2 lda _10 sta m+1 - //SEG278 [124] phi from mul8su::@2 mul8su::@3 to mul8su::@1 [phi:mul8su::@2/mul8su::@3->mul8su::@1] + //SEG283 [126] phi from mul8su::@2 mul8su::@3 to mul8su::@1 [phi:mul8su::@2/mul8su::@3->mul8su::@1] b1_from_b2: b1_from_b3: - //SEG279 [124] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@3->mul8su::@1#0] -- register_copy + //SEG284 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@3->mul8su::@1#0] -- register_copy jmp b1 - //SEG280 mul8su::@1 + //SEG285 mul8su::@1 b1: jmp breturn - //SEG281 mul8su::@return + //SEG286 mul8su::@return breturn: - //SEG282 [125] return + //SEG287 [127] return rts } -//SEG283 mul8u +//SEG288 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte zeropage($18) a, byte zeropage($17) b) mul8u: { @@ -4455,41 +4492,41 @@ mul8u: { .label return = $3b .label b = $17 .label return_3 = $4f - //SEG284 [127] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG289 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG285 [127] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG286 [127] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG290 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG291 [129] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG287 [127] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG292 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG288 mul8u::@1 + //SEG293 mul8u::@1 b1: - //SEG289 [128] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG294 [130] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG290 mul8u::@return + //SEG295 mul8u::@return breturn: - //SEG291 [129] return + //SEG296 [131] return rts - //SEG292 mul8u::@2 + //SEG297 mul8u::@2 b2: - //SEG293 [130] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG298 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG294 [131] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 + //SEG299 [133] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG295 mul8u::@4 + //SEG300 mul8u::@4 b4: - //SEG296 [132] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG301 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -4497,26 +4534,26 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG297 [133] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG302 [135] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG298 [133] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG303 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG299 mul8u::@3 + //SEG304 mul8u::@3 b3: - //SEG300 [134] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + //SEG305 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG301 [135] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG302 [127] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG307 [129] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG303 [127] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG304 [127] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG305 [127] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG308 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG309 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG310 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG306 sin8s +//SEG311 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -4541,7 +4578,7 @@ sin8s: { .label return_2 = $32 .label usinx_4 = $20 .label isUpper = $1d - //SEG307 [136] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG312 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -4551,9 +4588,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG308 sin8s::@5 + //SEG313 sin8s::@5 b5: - //SEG309 [137] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG314 [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG310 [138] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG315 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG311 [138] phi (byte) sin8s::isUpper#10 = (byte) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG316 [140] phi (byte) sin8s::isUpper#10 = (byte) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG312 [138] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG317 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG313 [138] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG318 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG314 [138] phi (byte) sin8s::isUpper#10 = (byte) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG319 [140] phi (byte) sin8s::isUpper#10 = (byte) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG315 [138] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG320 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG316 sin8s::@1 + //SEG321 sin8s::@1 b1: - //SEG317 [139] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG322 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -4587,9 +4624,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG318 sin8s::@6 + //SEG323 sin8s::@6 b6: - //SEG319 [140] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG324 [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG320 [141] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG325 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG321 [141] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG326 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG322 sin8s::@2 + //SEG327 sin8s::@2 b2: - //SEG323 [142] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 -- vwuz1=vwuz2_rol_3 + //SEG328 [144] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 -- vwuz1=vwuz2_rol_3 lda x asl sta _4 @@ -4615,194 +4652,194 @@ sin8s: { rol _4+1 asl _4 rol _4+1 - //SEG324 [143] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 -- vbuz1=_hi_vwuz2 + //SEG329 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 -- vbuz1=_hi_vwuz2 lda _4+1 sta x1 - //SEG325 [144] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG330 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v1 - //SEG326 [145] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG331 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG327 [146] call mulu8_sel - //SEG328 [179] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG332 [148] call mulu8_sel + //SEG333 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG329 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG334 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG330 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG331 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG335 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG336 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG332 [147] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG337 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return jmp b9 - //SEG333 sin8s::@9 + //SEG338 sin8s::@9 b9: - //SEG334 [148] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 + //SEG339 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 lda mulu8_sel.return sta x2 - //SEG335 [149] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 + //SEG340 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 lda x2 sta mulu8_sel.v1 - //SEG336 [150] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG341 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG337 [151] call mulu8_sel - //SEG338 [179] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] + //SEG342 [153] call mulu8_sel + //SEG343 [181] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] mulu8_sel_from_b9: - //SEG339 [179] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG344 [181] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG340 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@9->mulu8_sel#1] -- register_copy - //SEG341 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@9->mulu8_sel#2] -- register_copy + //SEG345 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@9->mulu8_sel#1] -- register_copy + //SEG346 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@9->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG342 [152] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG347 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_1 jmp b10 - //SEG343 sin8s::@10 + //SEG348 sin8s::@10 b10: - //SEG344 [153] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 + //SEG349 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 lda mulu8_sel.return_1 sta x3 - //SEG345 [154] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG350 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG346 [155] call mulu8_sel - //SEG347 [179] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG351 [157] call mulu8_sel + //SEG352 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG348 [179] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG353 [181] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG349 [179] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@10->mulu8_sel#1] -- vbuz1=vbuc1 + //SEG354 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@10->mulu8_sel#1] -- vbuz1=vbuc1 lda #DIV_6 sta mulu8_sel.v2 - //SEG350 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG355 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG351 [156] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG356 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_2 jmp b11 - //SEG352 sin8s::@11 + //SEG357 sin8s::@11 b11: - //SEG353 [157] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 + //SEG358 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 lda mulu8_sel.return_2 sta x3_6 - //SEG354 [158] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG359 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 lda x1 sec sbc x3_6 sta usinx - //SEG355 [159] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG360 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG356 [160] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG361 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG357 [161] call mulu8_sel - //SEG358 [179] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG362 [163] call mulu8_sel + //SEG363 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG359 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG364 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG360 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@11->mulu8_sel#1] -- register_copy - //SEG361 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG365 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@11->mulu8_sel#1] -- register_copy + //SEG366 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG362 [162] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG367 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_10 jmp b12 - //SEG363 sin8s::@12 + //SEG368 sin8s::@12 b12: - //SEG364 [163] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 + //SEG369 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 lda mulu8_sel.return_10 sta x4 - //SEG365 [164] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 + //SEG370 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 lda x4 sta mulu8_sel.v1 - //SEG366 [165] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG371 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG367 [166] call mulu8_sel - //SEG368 [179] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG372 [168] call mulu8_sel + //SEG373 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG369 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG374 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG370 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG371 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG375 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG376 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG372 [167] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG377 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_11 jmp b13 - //SEG373 sin8s::@13 + //SEG378 sin8s::@13 b13: - //SEG374 [168] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 + //SEG379 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 lda mulu8_sel.return_11 sta x5 - //SEG375 [169] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + //SEG380 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda x5 lsr lsr lsr lsr sta x5_128 - //SEG376 [170] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG381 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 lda usinx clc adc x5_128 sta usinx_1 - //SEG377 [171] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG382 [173] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 lda usinx_1 cmp #$80 bcc b3_from_b13 jmp b7 - //SEG378 sin8s::@7 + //SEG383 sin8s::@7 b7: - //SEG379 [172] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 + //SEG384 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 dec usinx_2 - //SEG380 [173] phi from sin8s::@13 sin8s::@7 to sin8s::@3 [phi:sin8s::@13/sin8s::@7->sin8s::@3] + //SEG385 [175] phi from sin8s::@13 sin8s::@7 to sin8s::@3 [phi:sin8s::@13/sin8s::@7->sin8s::@3] b3_from_b13: b3_from_b7: - //SEG381 [173] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@13/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG386 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@13/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG382 sin8s::@3 + //SEG387 sin8s::@3 b3: - //SEG383 [174] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 -- vbuz1_eq_0_then_la1 + //SEG388 [176] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b14 jmp b8 - //SEG384 sin8s::@8 + //SEG389 sin8s::@8 b8: - //SEG385 [175] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 + //SEG390 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 lda usinx_4 eor #$ff clc adc #1 sta sinx - //SEG386 [176] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] + //SEG391 [178] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] b4_from_b14: b4_from_b8: - //SEG387 [176] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG392 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG388 sin8s::@4 + //SEG393 sin8s::@4 b4: jmp breturn - //SEG389 sin8s::@return + //SEG394 sin8s::@return breturn: - //SEG390 [177] return + //SEG395 [179] return rts - //SEG391 sin8s::@14 + //SEG396 sin8s::@14 b14: - //SEG392 [178] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 + //SEG397 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 lda usinx_4 sta return jmp b4_from_b14 } -//SEG393 mulu8_sel +//SEG398 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip // mulu8_sel(byte zeropage($22) v1, byte zeropage($23) v2, byte zeropage($24) select) @@ -4818,36 +4855,36 @@ mulu8_sel: { .label return_11 = $4c .label select = $24 .label return_12 = $55 - //SEG394 [180] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 + //SEG399 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 lda v1 sta mul8u.a - //SEG395 [181] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 + //SEG400 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 lda v2 sta mul8u.b - //SEG396 [182] call mul8u - //SEG397 [126] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG401 [184] call mul8u + //SEG402 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] mul8u_from_mulu8_sel: - //SEG398 [126] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG399 [126] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- vwuz1=vbuz2 + //SEG403 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG404 [128] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG400 [183] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG405 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return_3 lda mul8u.res+1 sta mul8u.return_3+1 jmp b1 - //SEG401 mulu8_sel::@1 + //SEG406 mulu8_sel::@1 b1: - //SEG402 [184] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG407 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta _0 lda mul8u.return_3+1 sta _0+1 - //SEG403 [185] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 + //SEG408 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -4860,16 +4897,16 @@ mulu8_sel: { dey bne !- !e: - //SEG404 [186] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 + //SEG409 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 lda _1+1 sta return_12 jmp breturn - //SEG405 mulu8_sel::@return + //SEG410 mulu8_sel::@return breturn: - //SEG406 [187] return + //SEG411 [189] return rts } -//SEG407 div16u +//SEG412 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -4877,30 +4914,30 @@ mulu8_sel: { div16u: { .label return = $58 .label return_2 = $2e - //SEG408 [189] call divr16u - //SEG409 [193] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG413 [191] call divr16u + //SEG414 [195] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG410 [190] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG415 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b1 - //SEG411 div16u::@1 + //SEG416 div16u::@1 b1: - //SEG412 [191] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG417 [193] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta return lda divr16u.return_2+1 sta return+1 jmp breturn - //SEG413 div16u::@return + //SEG418 div16u::@return breturn: - //SEG414 [192] return + //SEG419 [194] return rts } -//SEG415 divr16u +//SEG420 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -4915,71 +4952,71 @@ divr16u: { .label i = $2b .label return = $29 .label return_2 = $56 - //SEG416 [194] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG421 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG417 [194] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG422 [196] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG418 [194] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG423 [196] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG419 [194] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG424 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG420 [194] phi (word) divr16u::rem#4 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG425 [196] phi (word) divr16u::rem#4 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 lda #0 sta rem lda #0 sta rem+1 jmp b1 - //SEG421 [194] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG426 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG422 [194] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG423 [194] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG424 [194] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG425 [194] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG427 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG428 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG429 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG430 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG426 divr16u::@1 + //SEG431 divr16u::@1 b1: - //SEG427 [195] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG432 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG428 [196] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + //SEG433 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG429 [197] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG434 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG430 [198] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG435 [200] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG431 divr16u::@4 + //SEG436 divr16u::@4 b4: - //SEG432 [199] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG437 [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG433 [200] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG438 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG434 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG439 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG435 divr16u::@2 + //SEG440 divr16u::@2 b2: - //SEG436 [201] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG441 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG437 [202] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG442 [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG438 [203] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG443 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3_from_b2 @@ -4989,14 +5026,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG439 divr16u::@5 + //SEG444 divr16u::@5 b5: - //SEG440 [204] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG445 [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG441 [205] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG446 [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.tabsize sta rem+1 - //SEG442 [206] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG447 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG443 [206] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG444 [206] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG448 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG449 [208] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG445 divr16u::@3 + //SEG450 divr16u::@3 b3: - //SEG446 [207] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG451 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG447 [208] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG452 [210] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b3 jmp breturn - //SEG448 divr16u::@return + //SEG453 divr16u::@return breturn: - //SEG449 [209] return + //SEG454 [211] return rts } -//SEG450 print_cls +//SEG455 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $2c - //SEG451 [211] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG456 [213] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG452 [211] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG457 [213] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG453 [211] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG458 [213] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG454 [211] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG459 [213] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG455 print_cls::@1 + //SEG460 print_cls::@1 b1: - //SEG456 [212] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG461 [214] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG457 [213] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG462 [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG458 [214] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG463 [216] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -5059,12 +5096,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG459 print_cls::@return + //SEG464 print_cls::@return breturn: - //SEG460 [215] return + //SEG465 [217] return rts } -//SEG461 File Data +//SEG466 File Data print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS @@ -5078,122 +5115,122 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ s Statement [44] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ sin8u_table::sinx_tr#0 ] -Statement [46] (byte*~) print_char_cursor#113 ← (byte*) print_line_cursor#1 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#113 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#113 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [46] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#116 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#116 print_line_cursor#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ sin8u_table::sinx_tr#0 ] Statement [48] (word) print_word::w#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ) always clobbers reg byte a Statement [56] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [64] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ) always clobbers reg byte a Statement [66] if((word) sin8u_table::i#1<(const word) main::tabsize#0) goto sin8u_table::@1 [ sin8u_table::step#0 sin8u_table::x#1 sin8u_table::sintab#1 sin8u_table::i#1 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#1 sin8u_table::sintab#1 sin8u_table::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#18 ] main:2::sin8u_table:7::print_ln:63 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#18 ] main:2::sin8u_table:7::print_ln:63 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_byte::b#8 print_char_cursor#100 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_byte:61 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:102 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_word:49::print_byte:102 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:102 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_word:49::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:111 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] ) always clobbers reg byte a +Statement [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] main:2::sin8u_table:7::print_ln:63 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] main:2::sin8u_table:7::print_ln:63 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:61 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:49::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:49::print_byte:106 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -Statement [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_byte:61 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:102 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_word:49::print_byte:102 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:102 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_word:49::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:111 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [82] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 [ print_char_cursor#64 ] ( main:2::sin8u_table:7::print_byte:19::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:23::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:27::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:31::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:61::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:15::print_byte:102::print_char:76 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:49::print_byte:102::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:102::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:49::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:111::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:19::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:23::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:27::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:31::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:61::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:15::print_byte:102::print_char:79 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:49::print_byte:102::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:102::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:49::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:111::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_char:94 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sbyte:53::print_char:108 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sbyte:53::print_char:114 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#64 ] ) always clobbers reg byte y +Statement [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:61 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:49::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:49::print_byte:106 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a +Statement [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 [ print_char_cursor#66 ] ( main:2::sin8u_table:7::print_byte:19::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:23::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:27::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:31::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:61::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:76 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:49::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:49::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:113::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:19::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:23::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:27::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:31::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:61::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:79 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:49::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:49::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:113::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_char:94 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_char:100 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:53::print_char:110 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:53::print_char:116 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Statement [87] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:47 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:51 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:55 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:59 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y Statement [89] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:47 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:51 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:55 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:59 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [92] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_char_cursor#94 print_word::w#0 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#94 print_word::w#0 ] ) always clobbers reg byte a -Statement [101] (byte) print_byte::b#1 ← > (word) print_word::w#3 [ print_byte::b#1 print_char_cursor#99 print_word::w#3 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_byte::b#1 print_char_cursor#99 print_word::w#3 ] main:2::sin8u_table:7::print_word:49 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#99 print_word::w#3 ] main:2::sin8u_table:7::print_sword:57::print_word:98 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#99 print_word::w#3 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#2 ← < (word) print_word::w#3 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_char_cursor#18 print_byte::b#2 ] main:2::sin8u_table:7::print_word:49 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::sin8u_table:7::print_sword:57::print_word:98 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [115] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:53 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [118] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a +Statement [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a +Statement [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a +Statement [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a +Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 [ print_byte::b#1 print_char_cursor#102 print_word::w#3 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] main:2::sin8u_table:7::print_word:49 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] main:2::sin8u_table:7::print_sword:57::print_word:97 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] ) always clobbers reg byte a +Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_char_cursor#19 print_byte::b#2 ] main:2::sin8u_table:7::print_word:49 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::sin8u_table:7::print_sword:57::print_word:97 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a +Statement [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:53 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [120] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ mul8su::a#0 ] -Statement [119] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a -Statement [121] (byte~) mul8su::$7 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$7 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$7 ] ) always clobbers reg byte a -Statement [132] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:117 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:146::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [121] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a +Statement [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$7 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$7 ] ) always clobbers reg byte a +Statement [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:119 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ sin8s::isUpper#10 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ sin8s::x1#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mulu8_sel::select#5 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:70 [ sin8s::x3#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ sin8s::usinx#0 ] -Statement [136] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a -Statement [137] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a -Statement [139] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a -Statement [140] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a -Statement [142] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a -Statement [143] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [158] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a -Statement [169] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a -Statement [170] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [175] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [183] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:146 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a -Statement [184] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:146 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [185] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:146 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [186] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:146 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [190] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [191] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [196] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:189 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a +Statement [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a +Statement [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a +Statement [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a +Statement [144] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a +Statement [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a +Statement [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a +Statement [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a +Statement [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a +Statement [185] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a +Statement [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a +Statement [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a +Statement [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a +Statement [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a +Statement [193] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] -Statement [199] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:189 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [203] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:189 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [205] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:189 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [212] *((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 [214] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [214] *((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 [216] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [11] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8u_table:7 [ div16u::return#2 ] ) always clobbers reg byte a Statement [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 [ sin8u_table::step#0 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 ] ) always clobbers reg byte a Statement [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 [ sin8u_table::step#0 print_word::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 print_word::w#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [35] (word) sin8s::x#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8s::x#2 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8s::x#2 print_line_cursor#1 ] ) always clobbers reg byte a Statement [41] (signed word) sin8u_table::sinx_sc#0 ← (signed word)(word) mul8su::m#2 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [44] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 ] ) always clobbers reg byte a reg byte y -Statement [46] (byte*~) print_char_cursor#113 ← (byte*) print_line_cursor#1 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#113 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#113 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [46] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#116 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_char_cursor#116 print_line_cursor#1 ] ) always clobbers reg byte a Statement [48] (word) print_word::w#2 ← (word) sin8u_table::x#10 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#2 print_char_cursor#2 ] ) always clobbers reg byte a Statement [56] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [64] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::i#10 sin8u_table::x#1 sin8u_table::sintab#1 print_line_cursor#1 ] ) always clobbers reg byte a Statement [66] if((word) sin8u_table::i#1<(const word) main::tabsize#0) goto sin8u_table::@1 [ sin8u_table::step#0 sin8u_table::x#1 sin8u_table::sintab#1 sin8u_table::i#1 print_line_cursor#1 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 sin8u_table::x#1 sin8u_table::sintab#1 sin8u_table::i#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#18 ] main:2::sin8u_table:7::print_ln:63 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#18 ] main:2::sin8u_table:7::print_ln:63 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_byte::b#8 print_char_cursor#100 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_byte:61 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:102 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_word:49::print_byte:102 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:102 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_word:49::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:111 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#100 print_byte::$0 ] ) always clobbers reg byte a -Statement [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_byte:61 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:102 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_word:49::print_byte:102 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:102 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_word:49::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:111 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [82] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 [ print_char_cursor#64 ] ( main:2::sin8u_table:7::print_byte:19::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:23::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:27::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:31::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:61::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:15::print_byte:102::print_char:76 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:49::print_byte:102::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:102::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:49::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:111::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:19::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:23::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:27::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:31::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_byte:61::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:15::print_byte:102::print_char:79 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:49::print_byte:102::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:102::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:79 [ sin8u_table::step#0 print_char_cursor#64 ] main:2::sin8u_table:7::print_word:49::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_word:98::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:111::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sword:57::print_char:94 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sbyte:53::print_char:108 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#64 ] main:2::sin8u_table:7::print_sbyte:53::print_char:114 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#64 ] ) always clobbers reg byte y +Statement [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] main:2::sin8u_table:7::print_ln:63 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::sin8u_table:7::print_ln:33 [ sin8u_table::step#0 print_line_cursor#1 print_char_cursor#19 ] main:2::sin8u_table:7::print_ln:63 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4 [ print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_byte:61 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:49::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_word:49::print_byte:106 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#103 print_byte::$0 ] ) always clobbers reg byte a +Statement [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_byte:61 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:104 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:49::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:104 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:106 [ sin8u_table::step#0 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_word:49::print_byte:106 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:106 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a +Statement [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 [ print_char_cursor#66 ] ( main:2::sin8u_table:7::print_byte:19::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:23::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:27::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:31::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:61::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:76 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:49::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:104::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:76 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:49::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:106::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:113::print_char:76 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:19::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:23::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:27::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:31::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_byte:61::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:104::print_char:79 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:49::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:104::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:15::print_byte:106::print_char:79 [ sin8u_table::step#0 print_char_cursor#66 ] main:2::sin8u_table:7::print_word:49::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_word:97::print_byte:106::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:53::print_byte:113::print_char:79 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_char:94 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sword:57::print_char:100 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:53::print_char:110 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] main:2::sin8u_table:7::print_sbyte:53::print_char:116 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sbyte::b#1 print_char_cursor#66 ] ) always clobbers reg byte y Statement [87] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:47 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:51 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:55 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:59 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y Statement [89] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::sin8u_table:7::print_str:13 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:17 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:21 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:25 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:29 [ sin8u_table::step#0 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:47 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:51 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:55 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::sin8u_table:7::print_str:59 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y -Statement [92] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_char_cursor#94 print_word::w#0 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#94 print_word::w#0 ] ) always clobbers reg byte a -Statement [101] (byte) print_byte::b#1 ← > (word) print_word::w#3 [ print_byte::b#1 print_char_cursor#99 print_word::w#3 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_byte::b#1 print_char_cursor#99 print_word::w#3 ] main:2::sin8u_table:7::print_word:49 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#99 print_word::w#3 ] main:2::sin8u_table:7::print_sword:57::print_word:98 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#99 print_word::w#3 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#2 ← < (word) print_word::w#3 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_char_cursor#18 print_byte::b#2 ] main:2::sin8u_table:7::print_word:49 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::sin8u_table:7::print_sword:57::print_word:98 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [115] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:53 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [118] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a -Statement [119] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a -Statement [121] (byte~) mul8su::$7 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$7 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$7 ] ) always clobbers reg byte a -Statement [130] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:117 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:146::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [132] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:117 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:146::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166::mul8u:182 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [136] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a -Statement [137] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a -Statement [139] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a -Statement [140] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a -Statement [142] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a -Statement [143] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [158] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a -Statement [169] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a -Statement [170] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [175] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [183] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:146 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a -Statement [184] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:146 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [185] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:146 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [186] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:146 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:151 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:155 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:161 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:166 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [190] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [191] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [196] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:189 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [199] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:189 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [203] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:189 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [205] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:189 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [212] *((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 [214] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_sword::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_sword::w#1 print_char_cursor#2 ] ) always clobbers reg byte a +Statement [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#19 print_word::w#0 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a +Statement [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::sin8u_table:7::print_sword:57 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a +Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 [ print_byte::b#1 print_char_cursor#102 print_word::w#3 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] main:2::sin8u_table:7::print_word:49 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] main:2::sin8u_table:7::print_sword:57::print_word:97 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#1 print_char_cursor#102 print_word::w#3 ] ) always clobbers reg byte a +Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::sin8u_table:7::print_word:15 [ sin8u_table::step#0 print_char_cursor#19 print_byte::b#2 ] main:2::sin8u_table:7::print_word:49 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::sin8u_table:7::print_sword:57::print_word:97 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a +Statement [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:53 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [120] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a +Statement [121] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a +Statement [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$7 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$7 ] ) always clobbers reg byte a +Statement [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:119 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:119 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a +Statement [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a +Statement [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a +Statement [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a +Statement [144] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 [ sin8s::isUpper#10 sin8s::$4 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$4 ] ) always clobbers reg byte a +Statement [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a +Statement [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a +Statement [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a +Statement [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a +Statement [185] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a +Statement [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a +Statement [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a +Statement [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a +Statement [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a +Statement [193] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [214] *((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 [216] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] : zp ZP_WORD:6 , Potential registers zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] : zp ZP_WORD:8 , Potential registers zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] : zp ZP_BYTE:10 , reg byte x , -Potential registers zp ZP_BYTE:11 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] : zp ZP_WORD:12 , -Potential registers zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] : zp ZP_WORD:14 , -Potential registers zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] : zp ZP_WORD:16 , +Potential registers zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:12 [ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] : zp ZP_WORD:12 , +Potential registers zp ZP_WORD:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] : zp ZP_WORD:14 , +Potential registers zp ZP_WORD:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] : zp ZP_WORD:16 , Potential registers zp ZP_WORD:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] : zp ZP_WORD:18 , Potential registers zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , Potential registers zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] : zp ZP_WORD:21 , @@ -5252,8 +5289,8 @@ Potential registers zp ZP_BYTE:91 [ divr16u::$2 ] : zp ZP_BYTE:91 , reg byte a , REGISTER UPLIFT SCOPES Uplift Scope [mul8u] 346.86: zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp ZP_BYTE:63 [ mul8u::$1 ] 180.67: zp ZP_BYTE:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] 4: zp ZP_BYTE:23 [ mul8u::b#1 ] 4: zp ZP_WORD:59 [ mul8u::return#2 ] 4: zp ZP_WORD:79 [ mul8u::return#3 ] -Uplift Scope [] 225.78: zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] 220.73: zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] -Uplift Scope [print_str] 305.5: zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplift Scope [] 225.78: zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] 218.06: zp ZP_WORD:12 [ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] +Uplift Scope [print_str] 305.5: zp ZP_WORD:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] Uplift Scope [divr16u] 96.25: zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 37.25: zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:90 [ divr16u::$1 ] 22: zp ZP_BYTE:91 [ divr16u::$2 ] 18.19: zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp ZP_WORD:86 [ divr16u::return#2 ] Uplift Scope [sin8s] 27.5: zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] 22: zp ZP_BYTE:50 [ sin8s::return#2 ] 13: zp ZP_BYTE:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] 10: zp ZP_BYTE:32 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp ZP_WORD:64 [ sin8s::$4 ] 4: zp ZP_BYTE:68 [ sin8s::x2#0 ] 4: zp ZP_BYTE:72 [ sin8s::x3_6#0 ] 4: zp ZP_BYTE:75 [ sin8s::x4#0 ] 4: zp ZP_BYTE:77 [ sin8s::x5#0 ] 4: zp ZP_BYTE:78 [ sin8s::x5_128#0 ] 1: zp ZP_BYTE:70 [ sin8s::x3#0 ] 0.64: zp ZP_BYTE:66 [ sin8s::x1#0 ] 0.33: zp ZP_BYTE:73 [ sin8s::usinx#0 ] 0.06: zp ZP_BYTE:29 [ sin8s::isUpper#10 ] Uplift Scope [mulu8_sel] 24: zp ZP_BYTE:34 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] 21: zp ZP_BYTE:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp ZP_BYTE:67 [ mulu8_sel::return#0 ] 4: zp ZP_BYTE:69 [ mulu8_sel::return#1 ] 4: zp ZP_BYTE:71 [ mulu8_sel::return#2 ] 4: zp ZP_BYTE:74 [ mulu8_sel::return#10 ] 4: zp ZP_BYTE:76 [ mulu8_sel::return#11 ] 4: zp ZP_WORD:81 [ mulu8_sel::$0 ] 4: zp ZP_WORD:83 [ mulu8_sel::$1 ] 1.71: zp ZP_BYTE:85 [ mulu8_sel::return#12 ] 0.33: zp ZP_BYTE:36 [ mulu8_sel::select#5 ] @@ -5262,68 +5299,68 @@ Uplift Scope [print_byte] 39.25: zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 Uplift Scope [print_word] 36.33: zp ZP_WORD:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [mul8su] 7.33: zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] 4: zp ZP_BYTE:61 [ mul8su::$7 ] 4: zp ZP_BYTE:62 [ mul8su::$10 ] 2.6: zp ZP_BYTE:52 [ mul8su::a#0 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:11 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplift Scope [print_sword] 12.25: zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplift Scope [print_sword] 10.83: zp ZP_WORD:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Uplift Scope [print_sbyte] 10.83: zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Uplift Scope [div16u] 4: zp ZP_WORD:46 [ div16u::return#2 ] 1.33: zp ZP_WORD:88 [ div16u::return#0 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [mul8u] best 24140 combination zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#1 ] zp ZP_WORD:59 [ mul8u::return#2 ] zp ZP_WORD:79 [ mul8u::return#3 ] -Uplifting [] best 24140 combination zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] -Uplifting [print_str] best 24140 combination zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplifting [divr16u] best 23930 combination zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:86 [ divr16u::return#2 ] -Uplifting [sin8s] best 23825 combination zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] reg byte a [ sin8s::return#2 ] reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:64 [ sin8s::$4 ] zp ZP_BYTE:68 [ sin8s::x2#0 ] zp ZP_BYTE:72 [ sin8s::x3_6#0 ] zp ZP_BYTE:75 [ sin8s::x4#0 ] zp ZP_BYTE:77 [ sin8s::x5#0 ] zp ZP_BYTE:78 [ sin8s::x5_128#0 ] zp ZP_BYTE:70 [ sin8s::x3#0 ] zp ZP_BYTE:66 [ sin8s::x1#0 ] zp ZP_BYTE:73 [ sin8s::usinx#0 ] zp ZP_BYTE:29 [ sin8s::isUpper#10 ] +Uplifting [mul8u] best 24157 combination zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#1 ] zp ZP_WORD:59 [ mul8u::return#2 ] zp ZP_WORD:79 [ mul8u::return#3 ] +Uplifting [] best 24157 combination zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:12 [ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] +Uplifting [print_str] best 24157 combination zp ZP_WORD:14 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplifting [divr16u] best 23947 combination zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:86 [ divr16u::return#2 ] +Uplifting [sin8s] best 23842 combination zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] reg byte a [ sin8s::return#2 ] reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:64 [ sin8s::$4 ] zp ZP_BYTE:68 [ sin8s::x2#0 ] zp ZP_BYTE:72 [ sin8s::x3_6#0 ] zp ZP_BYTE:75 [ sin8s::x4#0 ] zp ZP_BYTE:77 [ sin8s::x5#0 ] zp ZP_BYTE:78 [ sin8s::x5_128#0 ] zp ZP_BYTE:70 [ sin8s::x3#0 ] zp ZP_BYTE:66 [ sin8s::x1#0 ] zp ZP_BYTE:73 [ sin8s::usinx#0 ] zp ZP_BYTE:29 [ sin8s::isUpper#10 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [mulu8_sel] best 23779 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:71 [ mulu8_sel::return#2 ] zp ZP_BYTE:74 [ mulu8_sel::return#10 ] zp ZP_BYTE:76 [ mulu8_sel::return#11 ] zp ZP_WORD:81 [ mulu8_sel::$0 ] zp ZP_WORD:83 [ mulu8_sel::$1 ] zp ZP_BYTE:85 [ mulu8_sel::return#12 ] zp ZP_BYTE:36 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 23796 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:71 [ mulu8_sel::return#2 ] zp ZP_BYTE:74 [ mulu8_sel::return#10 ] zp ZP_BYTE:76 [ mulu8_sel::return#11 ] zp ZP_WORD:81 [ mulu8_sel::$0 ] zp ZP_WORD:83 [ mulu8_sel::$1 ] zp ZP_BYTE:85 [ mulu8_sel::return#12 ] zp ZP_BYTE:36 [ mulu8_sel::select#5 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [sin8u_table] best 23669 combination reg byte a [ sin8u_table::$21 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] zp ZP_WORD:53 [ sin8u_table::sinx_sc#0 ] reg byte x [ sin8u_table::sinx_tr#0 ] zp ZP_WORD:48 [ sin8u_table::step#0 ] -Uplifting [print_byte] best 23661 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 23661 combination zp ZP_WORD:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] -Uplifting [print_cls] best 23661 combination zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [mul8su] best 23619 combination zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] reg byte a [ mul8su::$7 ] reg byte a [ mul8su::$10 ] reg byte y [ mul8su::a#0 ] -Uplifting [print_char] best 23601 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [print_sword] best 23601 combination zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_sbyte] best 23601 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [div16u] best 23601 combination zp ZP_WORD:46 [ div16u::return#2 ] zp ZP_WORD:88 [ div16u::return#0 ] -Uplifting [print_ln] best 23601 combination -Uplifting [main] best 23601 combination +Uplifting [sin8u_table] best 23686 combination reg byte a [ sin8u_table::$21 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] zp ZP_WORD:53 [ sin8u_table::sinx_sc#0 ] reg byte x [ sin8u_table::sinx_tr#0 ] zp ZP_WORD:48 [ sin8u_table::step#0 ] +Uplifting [print_byte] best 23678 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 23678 combination zp ZP_WORD:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] +Uplifting [print_cls] best 23678 combination zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [mul8su] best 23636 combination zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] reg byte a [ mul8su::$7 ] reg byte a [ mul8su::$10 ] reg byte y [ mul8su::a#0 ] +Uplifting [print_char] best 23615 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplifting [print_sword] best 23615 combination zp ZP_WORD:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [print_sbyte] best 23615 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [div16u] best 23615 combination zp ZP_WORD:46 [ div16u::return#2 ] zp ZP_WORD:88 [ div16u::return#0 ] +Uplifting [print_ln] best 23615 combination +Uplifting [main] best 23615 combination Attempting to uplift remaining variables inzp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -Uplifting [print_byte] best 23601 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] +Uplifting [print_byte] best 23615 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_sbyte] best 23601 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [print_sbyte] best 23615 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ sin8s::x2#0 ] -Uplifting [sin8s] best 23597 combination reg byte a [ sin8s::x2#0 ] +Uplifting [sin8s] best 23611 combination reg byte a [ sin8s::x2#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ mulu8_sel::return#2 ] -Uplifting [mulu8_sel] best 23591 combination reg byte a [ mulu8_sel::return#2 ] +Uplifting [mulu8_sel] best 23605 combination reg byte a [ mulu8_sel::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ sin8s::x3_6#0 ] -Uplifting [sin8s] best 23587 combination reg byte a [ sin8s::x3_6#0 ] +Uplifting [sin8s] best 23601 combination reg byte a [ sin8s::x3_6#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:74 [ mulu8_sel::return#10 ] -Uplifting [mulu8_sel] best 23581 combination reg byte a [ mulu8_sel::return#10 ] +Uplifting [mulu8_sel] best 23595 combination reg byte a [ mulu8_sel::return#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:75 [ sin8s::x4#0 ] -Uplifting [sin8s] best 23577 combination reg byte a [ sin8s::x4#0 ] +Uplifting [sin8s] best 23591 combination reg byte a [ sin8s::x4#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ mulu8_sel::return#11 ] -Uplifting [mulu8_sel] best 23571 combination reg byte a [ mulu8_sel::return#11 ] +Uplifting [mulu8_sel] best 23585 combination reg byte a [ mulu8_sel::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ sin8s::x5#0 ] -Uplifting [sin8s] best 23565 combination reg byte a [ sin8s::x5#0 ] +Uplifting [sin8s] best 23579 combination reg byte a [ sin8s::x5#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:78 [ sin8s::x5_128#0 ] -Uplifting [sin8s] best 23559 combination reg byte a [ sin8s::x5_128#0 ] +Uplifting [sin8s] best 23573 combination reg byte a [ sin8s::x5_128#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ sin8u_table::sinx#0 ] -Uplifting [sin8u_table] best 23559 combination zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] +Uplifting [sin8u_table] best 23573 combination zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:85 [ mulu8_sel::return#12 ] -Uplifting [mulu8_sel] best 23541 combination reg byte a [ mulu8_sel::return#12 ] +Uplifting [mulu8_sel] best 23555 combination reg byte a [ mulu8_sel::return#12 ] Attempting to uplift remaining variables inzp ZP_BYTE:70 [ sin8s::x3#0 ] -Uplifting [sin8s] best 23541 combination zp ZP_BYTE:70 [ sin8s::x3#0 ] +Uplifting [sin8s] best 23555 combination zp ZP_BYTE:70 [ sin8s::x3#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:66 [ sin8s::x1#0 ] -Uplifting [sin8s] best 23541 combination zp ZP_BYTE:66 [ sin8s::x1#0 ] +Uplifting [sin8s] best 23555 combination zp ZP_BYTE:66 [ sin8s::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Uplifting [mulu8_sel] best 23541 combination zp ZP_BYTE:36 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 23555 combination zp ZP_BYTE:36 [ mulu8_sel::select#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ sin8s::usinx#0 ] -Uplifting [sin8s] best 23541 combination zp ZP_BYTE:73 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 23555 combination zp ZP_BYTE:73 [ sin8s::usinx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ sin8s::isUpper#10 ] -Uplifting [sin8s] best 23541 combination zp ZP_BYTE:29 [ sin8s::isUpper#10 ] +Uplifting [sin8s] best 23555 combination zp ZP_BYTE:29 [ sin8s::isUpper#10 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] ] with [ zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] ] with [ zp ZP_WORD:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] with [ zp ZP_WORD:18 [ print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] ] with [ zp ZP_WORD:53 [ sin8u_table::sinx_sc#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 ] ] with [ zp ZP_WORD:59 [ mul8u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:79 [ mul8u::return#3 ] ] - score: 1 @@ -5335,9 +5372,9 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:81 [ mulu8_sel Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 ] ] with [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:46 [ div16u::return#2 sin8u_table::step#0 div16u::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp ZP_WORD:81 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1 -Allocated (was zp ZP_WORD:12) zp ZP_WORD:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Allocated (was zp ZP_WORD:14) zp ZP_WORD:13 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] -Allocated (was zp ZP_WORD:16) zp ZP_WORD:15 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] +Allocated (was zp ZP_WORD:12) zp ZP_WORD:11 [ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] +Allocated (was zp ZP_WORD:14) zp ZP_WORD:13 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Allocated (was zp ZP_WORD:16) zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] Allocated (was zp ZP_WORD:21) zp ZP_WORD:17 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mulu8_sel::$0 mulu8_sel::$1 ] Allocated (was zp ZP_WORD:27) zp ZP_WORD:19 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:21 [ sin8s::isUpper#10 ] @@ -5365,7 +5402,7 @@ ASSEMBLER BEFORE OPTIMIZATION .const PI_u4f12 = $3244 // PI/2 in u[4.12] format .const PI_HALF_u4f12 = $1922 - .label print_char_cursor = $f + .label print_char_cursor = $b .label print_line_cursor = 8 //SEG3 @begin bbegin: @@ -5387,7 +5424,7 @@ bend: main: { .label tabsize = $14 //SEG11 [5] call print_cls - //SEG12 [210] phi from main to print_cls [phi:main->print_cls] + //SEG12 [212] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -5426,7 +5463,7 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG20 [10] call div16u - //SEG21 [188] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG21 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] div16u_from_sin8u_table: jsr div16u //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 @@ -5437,7 +5474,7 @@ sin8u_table: { //SEG25 [13] call print_str //SEG26 [85] phi from sin8u_table::@2 to print_str [phi:sin8u_table::@2->print_str] print_str_from_b2: - //SEG27 [85] phi (byte*) print_char_cursor#105 = (byte*) 1024 [phi:sin8u_table::@2->print_str#0] -- pbuz1=pbuc1 + //SEG27 [85] phi (byte*) print_char_cursor#108 = (byte*) 1024 [phi:sin8u_table::@2->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -5457,10 +5494,10 @@ sin8u_table: { lda step+1 sta print_word.w+1 //SEG31 [15] call print_word - //SEG32 [100] phi from sin8u_table::@3 to print_word [phi:sin8u_table::@3->print_word] + //SEG32 [102] phi from sin8u_table::@3 to print_word [phi:sin8u_table::@3->print_word] print_word_from_b3: - //SEG33 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@3->print_word#0] -- register_copy - //SEG34 [100] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@3->print_word#1] -- register_copy + //SEG33 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#2 [phi:sin8u_table::@3->print_word#0] -- register_copy + //SEG34 [102] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@3->print_word#1] -- register_copy jsr print_word //SEG35 [16] phi from sin8u_table::@3 to sin8u_table::@4 [phi:sin8u_table::@3->sin8u_table::@4] b4_from_b3: @@ -5470,7 +5507,7 @@ sin8u_table: { //SEG37 [17] call print_str //SEG38 [85] phi from sin8u_table::@4 to print_str [phi:sin8u_table::@4->print_str] print_str_from_b4: - //SEG39 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@4->print_str#0] -- register_copy + //SEG39 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@4->print_str#0] -- register_copy //SEG40 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@4->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b5: - //SEG45 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@5->print_byte#0] -- register_copy + //SEG45 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@5->print_byte#0] -- register_copy //SEG46 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@5->print_byte#1] -- vbuz1=vbuc1 lda #min sta print_byte.b @@ -5498,7 +5535,7 @@ sin8u_table: { //SEG49 [21] call print_str //SEG50 [85] phi from sin8u_table::@6 to print_str [phi:sin8u_table::@6->print_str] print_str_from_b6: - //SEG51 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@6->print_str#0] -- register_copy + //SEG51 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@6->print_str#0] -- register_copy //SEG52 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@6->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b7: - //SEG57 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@7->print_byte#0] -- register_copy + //SEG57 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@7->print_byte#0] -- register_copy //SEG58 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@7->print_byte#1] -- vbuz1=vbuc1 lda #max sta print_byte.b @@ -5526,7 +5563,7 @@ sin8u_table: { //SEG61 [25] call print_str //SEG62 [85] phi from sin8u_table::@8 to print_str [phi:sin8u_table::@8->print_str] print_str_from_b8: - //SEG63 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@8->print_str#0] -- register_copy + //SEG63 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@8->print_str#0] -- register_copy //SEG64 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@8->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b9: - //SEG69 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@9->print_byte#0] -- register_copy + //SEG69 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@9->print_byte#0] -- register_copy //SEG70 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@9->print_byte#1] -- vbuz1=vbuc1 lda #amplitude sta print_byte.b @@ -5554,7 +5591,7 @@ sin8u_table: { //SEG73 [29] call print_str //SEG74 [85] phi from sin8u_table::@10 to print_str [phi:sin8u_table::@10->print_str] print_str_from_b10: - //SEG75 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@10->print_str#0] -- register_copy + //SEG75 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@10->print_str#0] -- register_copy //SEG76 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@10->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b11: - //SEG81 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@11->print_byte#0] -- register_copy + //SEG81 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@11->print_byte#0] -- register_copy //SEG82 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@11->print_byte#1] -- vbuz1=vbuc1 lda #mid sta print_byte.b @@ -5650,7 +5687,7 @@ sin8u_table: { bne !+ inc sintab+1 !: - //SEG110 [46] (byte*~) print_char_cursor#113 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG110 [46] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -5658,7 +5695,7 @@ sin8u_table: { //SEG111 [47] call print_str //SEG112 [85] phi from sin8u_table::@14 to print_str [phi:sin8u_table::@14->print_str] print_str_from_b14: - //SEG113 [85] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#113 [phi:sin8u_table::@14->print_str#0] -- register_copy + //SEG113 [85] phi (byte*) print_char_cursor#108 = (byte*~) print_char_cursor#116 [phi:sin8u_table::@14->print_str#0] -- register_copy //SEG114 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@14->print_str#1] -- pbuz1=pbuc1 lda #print_word] + //SEG118 [102] phi from sin8u_table::@15 to print_word [phi:sin8u_table::@15->print_word] print_word_from_b15: - //SEG119 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@15->print_word#0] -- register_copy - //SEG120 [100] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@15->print_word#1] -- register_copy + //SEG119 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#2 [phi:sin8u_table::@15->print_word#0] -- register_copy + //SEG120 [102] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@15->print_word#1] -- register_copy jsr print_word //SEG121 [50] phi from sin8u_table::@15 to sin8u_table::@16 [phi:sin8u_table::@15->sin8u_table::@16] b16_from_b15: @@ -5687,7 +5724,7 @@ sin8u_table: { //SEG123 [51] call print_str //SEG124 [85] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] print_str_from_b16: - //SEG125 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@16->print_str#0] -- register_copy + //SEG125 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@16->print_str#0] -- register_copy //SEG126 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b18: - //SEG134 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy + //SEG134 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@18->print_str#0] -- register_copy //SEG135 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b20: - //SEG143 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy + //SEG143 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@20->print_str#0] -- register_copy //SEG144 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 lda #print_byte] print_byte_from_b21: - //SEG149 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@21->print_byte#0] -- register_copy + //SEG149 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@21->print_byte#0] -- register_copy //SEG150 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@21->print_byte#1] -- register_copy jsr print_byte //SEG151 [62] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] @@ -5821,7 +5858,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG167 [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG167 [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5847,14 +5884,14 @@ print_byte: { lsr lsr lsr - //SEG172 [75] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG172 [75] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG173 [76] call print_char //SEG174 [81] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG175 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy - //SEG176 [81] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG175 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#103 [phi:print_byte->print_char#0] -- register_copy + //SEG176 [81] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 //SEG177 print_byte::@1 @@ -5862,14 +5899,14 @@ print_byte: { //SEG178 [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG179 [78] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG179 [78] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG180 [79] call print_char //SEG181 [81] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG182 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG183 [81] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG182 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG183 [81] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn //SEG184 print_byte::@return @@ -5881,10 +5918,10 @@ print_byte: { // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG187 [82] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG187 [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG188 [83] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 + //SEG188 [83] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#66 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -5897,13 +5934,13 @@ print_char: { } //SEG191 print_str // Print a zero-terminated string -// print_str(byte* zeropage($b) str) +// print_str(byte* zeropage($d) str) print_str: { - .label str = $b + .label str = $d //SEG192 [86] 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: - //SEG193 [86] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG193 [86] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#108 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG194 [86] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 //SEG195 print_str::@1 @@ -5939,28 +5976,59 @@ print_str: { } //SEG203 print_sword // Print a signed word as HEX -// print_sword(signed word zeropage($d) w) +// print_sword(signed word zeropage($f) w) print_sword: { - .label w = $d - //SEG204 [92] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + .label w = $f + //SEG204 [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG205 [93] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG206 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG205 [93] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG206 print_sword::@3 + b3: //SEG207 [94] call print_char - //SEG208 [81] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG209 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG210 [81] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG208 [81] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG209 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG210 [81] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG211 [95] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG212 [95] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG213 print_sword::@2 + b2: + //SEG214 [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG215 [97] call print_word + //SEG216 [102] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG217 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG218 [102] phi (word) print_word::w#3 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG219 print_sword::@return + breturn: + //SEG220 [98] return + rts + //SEG221 [99] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG222 print_sword::@1 + b1: + //SEG223 [100] call print_char + //SEG224 [81] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG225 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG226 [81] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG211 print_sword::@3 - b3: - //SEG212 [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG227 print_sword::@4 + b4: + //SEG228 [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -5968,114 +6036,95 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG213 [96] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG214 [96] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG215 [96] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG216 print_sword::@1 - b1: - //SEG217 [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG218 [98] call print_word - //SEG219 [100] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG220 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG221 [100] phi (word) print_word::w#3 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG222 print_sword::@return - breturn: - //SEG223 [99] return - rts + jmp b2_from_b4 } -//SEG224 print_word +//SEG229 print_word // Print a word as HEX -// print_word(word zeropage($d) w) +// print_word(word zeropage($f) w) print_word: { - .label w = $d - //SEG225 [101] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 + .label w = $f + //SEG230 [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG226 [102] call print_byte - //SEG227 [73] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG231 [104] call print_byte + //SEG232 [73] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG228 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy - //SEG229 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG233 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#102 [phi:print_word->print_byte#0] -- register_copy + //SEG234 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG230 print_word::@1 + //SEG235 print_word::@1 b1: - //SEG231 [103] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 + //SEG236 [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG232 [104] call print_byte - //SEG233 [73] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG237 [106] call print_byte + //SEG238 [73] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG234 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG235 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG239 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG240 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG236 print_word::@return + //SEG241 print_word::@return breturn: - //SEG237 [105] return + //SEG242 [107] return rts } -//SEG238 print_sbyte +//SEG243 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage($a) b) print_sbyte: { .label b = $a - //SEG239 [106] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG244 [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG240 [107] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG245 [109] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG241 print_sbyte::@3 + //SEG246 print_sbyte::@3 b3: - //SEG242 [108] call print_char - //SEG243 [81] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG247 [110] call print_char + //SEG248 [81] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG244 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG245 [81] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG249 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG250 [81] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG246 [109] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG251 [111] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG247 [109] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG252 [111] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG248 print_sbyte::@2 + //SEG253 print_sbyte::@2 b2: - //SEG249 [110] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 - //SEG250 [111] call print_byte - //SEG251 [73] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG254 [112] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 + //SEG255 [113] call print_byte + //SEG256 [73] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG252 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG253 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG257 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG258 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG254 print_sbyte::@return + //SEG259 print_sbyte::@return breturn: - //SEG255 [112] return + //SEG260 [114] return rts - //SEG256 [113] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG261 [115] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG257 print_sbyte::@1 + //SEG262 print_sbyte::@1 b1: - //SEG258 [114] call print_char - //SEG259 [81] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG263 [116] call print_char + //SEG264 [81] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG260 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG261 [81] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG265 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG266 [81] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG262 print_sbyte::@4 + //SEG267 print_sbyte::@4 b4: - //SEG263 [115] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG268 [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -6083,96 +6132,96 @@ print_sbyte: { sta b jmp b2_from_b4 } -//SEG264 mul8su +//SEG269 mul8su // Multiply a signed byte and an unsigned byte (into a signed word) // Fixes offsets introduced by using unsigned multiplication // mul8su(signed byte register(Y) a) mul8su: { .const b = sin8u_table.amplitude+1 .label m = $11 - //SEG265 [116] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 -- vbuxx=vbuyy + //SEG270 [118] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 -- vbuxx=vbuyy tya tax - //SEG266 [117] call mul8u - //SEG267 [126] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG271 [119] call mul8u + //SEG272 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] mul8u_from_mul8su: - //SEG268 [126] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8su->mul8u#0] -- register_copy - //SEG269 [126] phi (word) mul8u::mb#0 = (const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vwuz1=vbuc1 + //SEG273 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8su->mul8u#0] -- register_copy + //SEG274 [128] phi (word) mul8u::mb#0 = (const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vwuz1=vbuc1 lda #b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG270 [118] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG275 [120] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b3 - //SEG271 mul8su::@3 + //SEG276 mul8su::@3 b3: - //SEG272 [119] (word) mul8su::m#0 ← (word) mul8u::return#2 - //SEG273 [120] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 -- vbsyy_ge_0_then_la1 + //SEG277 [121] (word) mul8su::m#0 ← (word) mul8u::return#2 + //SEG278 [122] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 -- vbsyy_ge_0_then_la1 cpy #0 bpl b1_from_b3 jmp b2 - //SEG274 mul8su::@2 + //SEG279 mul8su::@2 b2: - //SEG275 [121] (byte~) mul8su::$7 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG280 [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG276 [122] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 + //SEG281 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #b - //SEG277 [123] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa + //SEG282 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG278 [124] phi from mul8su::@2 mul8su::@3 to mul8su::@1 [phi:mul8su::@2/mul8su::@3->mul8su::@1] + //SEG283 [126] phi from mul8su::@2 mul8su::@3 to mul8su::@1 [phi:mul8su::@2/mul8su::@3->mul8su::@1] b1_from_b2: b1_from_b3: - //SEG279 [124] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@3->mul8su::@1#0] -- register_copy + //SEG284 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@3->mul8su::@1#0] -- register_copy jmp b1 - //SEG280 mul8su::@1 + //SEG285 mul8su::@1 b1: jmp breturn - //SEG281 mul8su::@return + //SEG286 mul8su::@return breturn: - //SEG282 [125] return + //SEG287 [127] return rts } -//SEG283 mul8u +//SEG288 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $13 .label res = $11 .label return = $11 - //SEG284 [127] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG289 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG285 [127] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG286 [127] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG290 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG291 [129] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG287 [127] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG292 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG288 mul8u::@1 + //SEG293 mul8u::@1 b1: - //SEG289 [128] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG294 [130] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG290 mul8u::@return + //SEG295 mul8u::@return breturn: - //SEG291 [129] return + //SEG296 [131] return rts - //SEG292 mul8u::@2 + //SEG297 mul8u::@2 b2: - //SEG293 [130] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG298 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG294 [131] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG299 [133] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG295 mul8u::@4 + //SEG300 mul8u::@4 b4: - //SEG296 [132] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG301 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -6180,28 +6229,28 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG297 [133] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG302 [135] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG298 [133] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG303 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG299 mul8u::@3 + //SEG304 mul8u::@3 b3: - //SEG300 [134] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG305 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG301 [135] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG302 [127] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG307 [129] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG303 [127] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG304 [127] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG305 [127] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG308 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG309 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG310 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG306 sin8s +//SEG311 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -6215,7 +6264,7 @@ sin8s: { .label x3 = $23 .label usinx = $24 .label isUpper = $15 - //SEG307 [136] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG312 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -6225,9 +6274,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG308 sin8s::@5 + //SEG313 sin8s::@5 b5: - //SEG309 [137] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG314 [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG310 [138] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG315 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG311 [138] phi (byte) sin8s::isUpper#10 = (byte) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG316 [140] phi (byte) sin8s::isUpper#10 = (byte) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG312 [138] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG317 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG313 [138] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG318 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG314 [138] phi (byte) sin8s::isUpper#10 = (byte) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG319 [140] phi (byte) sin8s::isUpper#10 = (byte) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG315 [138] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG320 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG316 sin8s::@1 + //SEG321 sin8s::@1 b1: - //SEG317 [139] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG322 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -6261,9 +6310,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG318 sin8s::@6 + //SEG323 sin8s::@6 b6: - //SEG319 [140] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG324 [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG320 [141] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG325 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG321 [141] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG326 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG322 sin8s::@2 + //SEG327 sin8s::@2 b2: - //SEG323 [142] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG328 [144] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _4 rol _4+1 asl _4 rol _4+1 asl _4 rol _4+1 - //SEG324 [143] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 -- vbuz1=_hi_vwuz2 + //SEG329 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 -- vbuz1=_hi_vwuz2 lda _4+1 sta x1 - //SEG325 [144] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG330 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG326 [145] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG331 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG327 [146] call mulu8_sel - //SEG328 [179] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG332 [148] call mulu8_sel + //SEG333 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG329 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG334 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG330 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG331 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG335 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG336 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG332 [147] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG337 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 jmp b9 - //SEG333 sin8s::@9 + //SEG338 sin8s::@9 b9: - //SEG334 [148] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG335 [149] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG339 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG340 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG336 [150] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG341 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG337 [151] call mulu8_sel - //SEG338 [179] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] + //SEG342 [153] call mulu8_sel + //SEG343 [181] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] mulu8_sel_from_b9: - //SEG339 [179] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG344 [181] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG340 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@9->mulu8_sel#1] -- register_copy - //SEG341 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@9->mulu8_sel#2] -- register_copy + //SEG345 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@9->mulu8_sel#1] -- register_copy + //SEG346 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@9->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG342 [152] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG347 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 jmp b10 - //SEG343 sin8s::@10 + //SEG348 sin8s::@10 b10: - //SEG344 [153] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG349 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG345 [154] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG350 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG346 [155] call mulu8_sel - //SEG347 [179] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG351 [157] call mulu8_sel + //SEG352 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG348 [179] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG353 [181] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG349 [179] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@10->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG354 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@10->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG350 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG355 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG351 [156] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG356 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 jmp b11 - //SEG352 sin8s::@11 + //SEG357 sin8s::@11 b11: - //SEG353 [157] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG354 [158] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG358 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG359 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG355 [159] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG360 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG356 [160] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG361 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG357 [161] call mulu8_sel - //SEG358 [179] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG362 [163] call mulu8_sel + //SEG363 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG359 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG364 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG360 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@11->mulu8_sel#1] -- register_copy - //SEG361 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG365 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@11->mulu8_sel#1] -- register_copy + //SEG366 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG362 [162] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG367 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 jmp b12 - //SEG363 sin8s::@12 + //SEG368 sin8s::@12 b12: - //SEG364 [163] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG365 [164] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG369 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG370 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG366 [165] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG371 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG367 [166] call mulu8_sel - //SEG368 [179] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG372 [168] call mulu8_sel + //SEG373 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG369 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG374 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG370 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG371 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG375 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG376 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG372 [167] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG377 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 jmp b13 - //SEG373 sin8s::@13 + //SEG378 sin8s::@13 b13: - //SEG374 [168] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //SEG375 [169] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 + //SEG379 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG380 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG376 [170] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG381 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG377 [171] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG382 [173] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #$80 bcc b3_from_b13 jmp b7 - //SEG378 sin8s::@7 + //SEG383 sin8s::@7 b7: - //SEG379 [172] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG384 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG380 [173] phi from sin8s::@13 sin8s::@7 to sin8s::@3 [phi:sin8s::@13/sin8s::@7->sin8s::@3] + //SEG385 [175] phi from sin8s::@13 sin8s::@7 to sin8s::@3 [phi:sin8s::@13/sin8s::@7->sin8s::@3] b3_from_b13: b3_from_b7: - //SEG381 [173] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@13/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG386 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@13/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG382 sin8s::@3 + //SEG387 sin8s::@3 b3: - //SEG383 [174] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 -- vbuz1_eq_0_then_la1 + //SEG388 [176] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b14 jmp b8 - //SEG384 sin8s::@8 + //SEG389 sin8s::@8 b8: - //SEG385 [175] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG390 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG386 [176] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] + //SEG391 [178] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] b4_from_b14: b4_from_b8: - //SEG387 [176] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG392 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG388 sin8s::@4 + //SEG393 sin8s::@4 b4: jmp breturn - //SEG389 sin8s::@return + //SEG394 sin8s::@return breturn: - //SEG390 [177] return + //SEG395 [179] return rts - //SEG391 sin8s::@14 + //SEG396 sin8s::@14 b14: - //SEG392 [178] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG397 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4_from_b14 } -//SEG393 mulu8_sel +//SEG398 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip // mulu8_sel(byte register(X) v1, byte register(Y) v2, byte zeropage($18) select) @@ -6445,24 +6494,24 @@ mulu8_sel: { .label _0 = $11 .label _1 = $11 .label select = $18 - //SEG394 [180] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - //SEG395 [181] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG399 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + //SEG400 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG396 [182] call mul8u - //SEG397 [126] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG401 [184] call mul8u + //SEG402 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] mul8u_from_mulu8_sel: - //SEG398 [126] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG399 [126] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- vwuz1=vbuaa + //SEG403 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG404 [128] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG400 [183] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG405 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b1 - //SEG401 mulu8_sel::@1 + //SEG406 mulu8_sel::@1 b1: - //SEG402 [184] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - //SEG403 [185] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG407 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + //SEG408 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -6471,37 +6520,37 @@ mulu8_sel: { dey bne !- !e: - //SEG404 [186] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG409 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 jmp breturn - //SEG405 mulu8_sel::@return + //SEG410 mulu8_sel::@return breturn: - //SEG406 [187] return + //SEG411 [189] return rts } -//SEG407 div16u +//SEG412 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { .label return = $1d - //SEG408 [189] call divr16u - //SEG409 [193] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG413 [191] call divr16u + //SEG414 [195] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG410 [190] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG415 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b1 - //SEG411 div16u::@1 + //SEG416 div16u::@1 b1: - //SEG412 [191] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG417 [193] (word) div16u::return#0 ← (word) divr16u::return#2 jmp breturn - //SEG413 div16u::@return + //SEG418 div16u::@return breturn: - //SEG414 [192] return + //SEG419 [194] return rts } -//SEG415 divr16u +//SEG420 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6512,66 +6561,66 @@ divr16u: { .label dividend = $1b .label quotient = $1d .label return = $1d - //SEG416 [194] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG421 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG417 [194] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG422 [196] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG418 [194] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG423 [196] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG419 [194] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG424 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG420 [194] phi (word) divr16u::rem#4 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG425 [196] phi (word) divr16u::rem#4 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 lda #0 sta rem lda #0 sta rem+1 jmp b1 - //SEG421 [194] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG426 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG422 [194] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG423 [194] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG424 [194] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG425 [194] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG427 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG428 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG429 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG430 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG426 divr16u::@1 + //SEG431 divr16u::@1 b1: - //SEG427 [195] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG432 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG428 [196] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG433 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG429 [197] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG434 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG430 [198] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG435 [200] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG431 divr16u::@4 + //SEG436 divr16u::@4 b4: - //SEG432 [199] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG437 [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG433 [200] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG438 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG434 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG439 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG435 divr16u::@2 + //SEG440 divr16u::@2 b2: - //SEG436 [201] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG441 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG437 [202] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG442 [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG438 [203] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG443 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3_from_b2 @@ -6581,14 +6630,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG439 divr16u::@5 + //SEG444 divr16u::@5 b5: - //SEG440 [204] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG445 [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG441 [205] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG446 [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.tabsize sta rem+1 - //SEG442 [206] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG447 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG443 [206] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG444 [206] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG448 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG449 [208] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG445 divr16u::@3 + //SEG450 divr16u::@3 b3: - //SEG446 [207] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG451 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG447 [208] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG452 [210] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp breturn - //SEG448 divr16u::@return + //SEG453 divr16u::@return breturn: - //SEG449 [209] return + //SEG454 [211] return rts } -//SEG450 print_cls +//SEG455 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $1f - //SEG451 [211] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG456 [213] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG452 [211] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG457 [213] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG453 [211] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG458 [213] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG454 [211] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG459 [213] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG455 print_cls::@1 + //SEG460 print_cls::@1 b1: - //SEG456 [212] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG461 [214] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG457 [213] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG462 [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG458 [214] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG463 [216] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -6650,12 +6699,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG459 print_cls::@return + //SEG464 print_cls::@return breturn: - //SEG460 [215] return + //SEG465 [217] return rts } -//SEG461 File Data +//SEG466 File Data print_hextab: .text "0123456789abcdef" ASSEMBLER OPTIMIZATIONS @@ -6694,11 +6743,12 @@ Removing instruction jmp breturn Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 -Removing instruction jmp b1 +Removing instruction jmp b2 Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b3 Removing instruction jmp b2 @@ -6759,6 +6809,7 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b2 with b1 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_print_sbyte with b1 Replacing label b2_from_b4 with b2 Replacing label b1_from_b3 with b1 @@ -6811,11 +6862,13 @@ Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: +Removing instruction print_word_from_b2: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: -Removing instruction print_word_from_b1: +Removing instruction print_char_from_b1: Removing instruction b3_from_print_sbyte: Removing instruction print_char_from_b3: Removing instruction b2_from_b3: @@ -6883,9 +6936,9 @@ Removing instruction print_char_from_b1: Removing instruction breturn: Removing instruction breturn: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -7082,19 +7135,18 @@ FINAL SYMBOL TABLE (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#3 reg byte a 4.0 (byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#6 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:15 101.0 -(byte*) print_char_cursor#100 print_char_cursor zp ZP_WORD:15 9.0 -(byte*) print_char_cursor#105 print_char_cursor zp ZP_WORD:15 54.0 -(byte*~) print_char_cursor#113 print_char_cursor zp ZP_WORD:15 22.0 -(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:15 3.454545454545454 -(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:15 12.777777777777777 -(byte*) print_char_cursor#64 print_char_cursor zp ZP_WORD:15 7.0 -(byte*) print_char_cursor#94 print_char_cursor zp ZP_WORD:15 3.0 -(byte*) print_char_cursor#99 print_char_cursor zp ZP_WORD:15 8.5 +(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:11 101.0 +(byte*) print_char_cursor#102 print_char_cursor zp ZP_WORD:11 8.5 +(byte*) print_char_cursor#103 print_char_cursor zp ZP_WORD:11 9.0 +(byte*) print_char_cursor#108 print_char_cursor zp ZP_WORD:11 54.0 +(byte*~) print_char_cursor#116 print_char_cursor zp ZP_WORD:11 22.0 +(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:11 3.2340425531914887 +(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:11 12.321428571428571 +(byte*) print_char_cursor#66 print_char_cursor zp ZP_WORD:11 8.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -7126,26 +7178,27 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:11 202.0 -(byte*) print_str::str#10 str zp ZP_WORD:11 101.5 -(byte*) print_str::str#12 str zp ZP_WORD:11 2.0 +(byte*) print_str::str#0 str zp ZP_WORD:13 202.0 +(byte*) print_str::str#10 str zp ZP_WORD:13 101.5 +(byte*) print_str::str#12 str zp ZP_WORD:13 2.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp ZP_WORD:13 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:13 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:13 4.0 +(signed word) print_sword::w#0 w zp ZP_WORD:15 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:15 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:15 4.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:13 4.0 -(word) print_word::w#1 w zp ZP_WORD:13 4.0 -(word) print_word::w#2 w zp ZP_WORD:13 22.0 -(word) print_word::w#3 w zp ZP_WORD:13 6.333333333333334 +(word) print_word::w#0 w zp ZP_WORD:15 4.0 +(word) print_word::w#1 w zp ZP_WORD:15 4.0 +(word) print_word::w#2 w zp ZP_WORD:15 22.0 +(word) print_word::w#3 w zp ZP_WORD:15 6.333333333333334 (signed byte()) sin8s((word) sin8s::x) (word~) sin8s::$4 $4 zp ZP_WORD:22 4.0 (label) sin8s::@1 @@ -7267,10 +7320,10 @@ zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -zp ZP_WORD:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -zp ZP_WORD:13 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] -zp ZP_WORD:15 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] +reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +zp ZP_WORD:11 [ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] +zp ZP_WORD:13 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] zp ZP_WORD:17 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mulu8_sel::$0 mulu8_sel::$1 ] reg byte a [ mul8u::b#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] @@ -7316,7 +7369,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 19661 +Score: 19672 //SEG0 File Comments //SEG1 Basic Upstart @@ -7330,7 +7383,7 @@ Score: 19661 .const PI_u4f12 = $3244 // PI/2 in u[4.12] format .const PI_HALF_u4f12 = $1922 - .label print_char_cursor = $f + .label print_char_cursor = $b .label print_line_cursor = 8 //SEG3 @begin //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -7343,7 +7396,7 @@ Score: 19661 main: { .label tabsize = $14 //SEG11 [5] call print_cls - //SEG12 [210] phi from main to print_cls [phi:main->print_cls] + //SEG12 [212] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 main::@1 @@ -7375,14 +7428,14 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG20 [10] call div16u - //SEG21 [188] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG21 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] jsr div16u //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 //SEG23 sin8u_table::@2 //SEG24 [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 //SEG25 [13] call print_str //SEG26 [85] phi from sin8u_table::@2 to print_str [phi:sin8u_table::@2->print_str] - //SEG27 [85] phi (byte*) print_char_cursor#105 = (byte*) 1024 [phi:sin8u_table::@2->print_str#0] -- pbuz1=pbuc1 + //SEG27 [85] phi (byte*) print_char_cursor#108 = (byte*) 1024 [phi:sin8u_table::@2->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -7400,15 +7453,15 @@ sin8u_table: { lda step+1 sta print_word.w+1 //SEG31 [15] call print_word - //SEG32 [100] phi from sin8u_table::@3 to print_word [phi:sin8u_table::@3->print_word] - //SEG33 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@3->print_word#0] -- register_copy - //SEG34 [100] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@3->print_word#1] -- register_copy + //SEG32 [102] phi from sin8u_table::@3 to print_word [phi:sin8u_table::@3->print_word] + //SEG33 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#2 [phi:sin8u_table::@3->print_word#0] -- register_copy + //SEG34 [102] phi (word) print_word::w#3 = (word) print_word::w#1 [phi:sin8u_table::@3->print_word#1] -- register_copy jsr print_word //SEG35 [16] phi from sin8u_table::@3 to sin8u_table::@4 [phi:sin8u_table::@3->sin8u_table::@4] //SEG36 sin8u_table::@4 //SEG37 [17] call print_str //SEG38 [85] phi from sin8u_table::@4 to print_str [phi:sin8u_table::@4->print_str] - //SEG39 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@4->print_str#0] -- register_copy + //SEG39 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@4->print_str#0] -- register_copy //SEG40 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str1 [phi:sin8u_table::@4->print_str#1] -- pbuz1=pbuc1 lda #print_byte] - //SEG45 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@5->print_byte#0] -- register_copy + //SEG45 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@5->print_byte#0] -- register_copy //SEG46 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::min#0 [phi:sin8u_table::@5->print_byte#1] -- vbuz1=vbuc1 lda #min sta print_byte.b @@ -7428,7 +7481,7 @@ sin8u_table: { //SEG48 sin8u_table::@6 //SEG49 [21] call print_str //SEG50 [85] phi from sin8u_table::@6 to print_str [phi:sin8u_table::@6->print_str] - //SEG51 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@6->print_str#0] -- register_copy + //SEG51 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@6->print_str#0] -- register_copy //SEG52 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str2 [phi:sin8u_table::@6->print_str#1] -- pbuz1=pbuc1 lda #print_byte] - //SEG57 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@7->print_byte#0] -- register_copy + //SEG57 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@7->print_byte#0] -- register_copy //SEG58 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::max#0 [phi:sin8u_table::@7->print_byte#1] -- vbuz1=vbuc1 lda #max sta print_byte.b @@ -7448,7 +7501,7 @@ sin8u_table: { //SEG60 sin8u_table::@8 //SEG61 [25] call print_str //SEG62 [85] phi from sin8u_table::@8 to print_str [phi:sin8u_table::@8->print_str] - //SEG63 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@8->print_str#0] -- register_copy + //SEG63 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@8->print_str#0] -- register_copy //SEG64 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str3 [phi:sin8u_table::@8->print_str#1] -- pbuz1=pbuc1 lda #print_byte] - //SEG69 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@9->print_byte#0] -- register_copy + //SEG69 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@9->print_byte#0] -- register_copy //SEG70 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::amplitude#0 [phi:sin8u_table::@9->print_byte#1] -- vbuz1=vbuc1 lda #amplitude sta print_byte.b @@ -7468,7 +7521,7 @@ sin8u_table: { //SEG72 sin8u_table::@10 //SEG73 [29] call print_str //SEG74 [85] phi from sin8u_table::@10 to print_str [phi:sin8u_table::@10->print_str] - //SEG75 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@10->print_str#0] -- register_copy + //SEG75 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@10->print_str#0] -- register_copy //SEG76 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str4 [phi:sin8u_table::@10->print_str#1] -- pbuz1=pbuc1 lda #print_byte] - //SEG81 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@11->print_byte#0] -- register_copy + //SEG81 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@11->print_byte#0] -- register_copy //SEG82 [73] phi (byte) print_byte::b#8 = (const byte) sin8u_table::mid#0 [phi:sin8u_table::@11->print_byte#1] -- vbuz1=vbuc1 lda #mid sta print_byte.b @@ -7546,14 +7599,14 @@ sin8u_table: { bne !+ inc sintab+1 !: - //SEG110 [46] (byte*~) print_char_cursor#113 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG110 [46] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG111 [47] call print_str //SEG112 [85] phi from sin8u_table::@14 to print_str [phi:sin8u_table::@14->print_str] - //SEG113 [85] phi (byte*) print_char_cursor#105 = (byte*~) print_char_cursor#113 [phi:sin8u_table::@14->print_str#0] -- register_copy + //SEG113 [85] phi (byte*) print_char_cursor#108 = (byte*~) print_char_cursor#116 [phi:sin8u_table::@14->print_str#0] -- register_copy //SEG114 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str5 [phi:sin8u_table::@14->print_str#1] -- pbuz1=pbuc1 lda #print_word] - //SEG119 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#2 [phi:sin8u_table::@15->print_word#0] -- register_copy - //SEG120 [100] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@15->print_word#1] -- register_copy + //SEG118 [102] phi from sin8u_table::@15 to print_word [phi:sin8u_table::@15->print_word] + //SEG119 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#2 [phi:sin8u_table::@15->print_word#0] -- register_copy + //SEG120 [102] phi (word) print_word::w#3 = (word) print_word::w#2 [phi:sin8u_table::@15->print_word#1] -- register_copy jsr print_word //SEG121 [50] phi from sin8u_table::@15 to sin8u_table::@16 [phi:sin8u_table::@15->sin8u_table::@16] //SEG122 sin8u_table::@16 //SEG123 [51] call print_str //SEG124 [85] phi from sin8u_table::@16 to print_str [phi:sin8u_table::@16->print_str] - //SEG125 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@16->print_str#0] -- register_copy + //SEG125 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@16->print_str#0] -- register_copy //SEG126 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str6 [phi:sin8u_table::@16->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG134 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@18->print_str#0] -- register_copy + //SEG134 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@18->print_str#0] -- register_copy //SEG135 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str7 [phi:sin8u_table::@18->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG143 [85] phi (byte*) print_char_cursor#105 = (byte*) print_char_cursor#18 [phi:sin8u_table::@20->print_str#0] -- register_copy + //SEG143 [85] phi (byte*) print_char_cursor#108 = (byte*) print_char_cursor#19 [phi:sin8u_table::@20->print_str#0] -- register_copy //SEG144 [85] phi (byte*) print_str::str#12 = (const string) sin8u_table::str8 [phi:sin8u_table::@20->print_str#1] -- pbuz1=pbuc1 lda #print_byte] - //SEG149 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#2 [phi:sin8u_table::@21->print_byte#0] -- register_copy + //SEG149 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#2 [phi:sin8u_table::@21->print_byte#0] -- register_copy //SEG150 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#7 [phi:sin8u_table::@21->print_byte#1] -- register_copy jsr print_byte //SEG151 [62] phi from sin8u_table::@21 to sin8u_table::@22 [phi:sin8u_table::@21->sin8u_table::@22] @@ -7687,7 +7740,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG167 [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG167 [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -7711,25 +7764,25 @@ print_byte: { lsr lsr lsr - //SEG172 [75] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG172 [75] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG173 [76] call print_char //SEG174 [81] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG175 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#100 [phi:print_byte->print_char#0] -- register_copy - //SEG176 [81] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG175 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#103 [phi:print_byte->print_char#0] -- register_copy + //SEG176 [81] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char //SEG177 print_byte::@1 //SEG178 [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG179 [78] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG179 [78] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG180 [79] call print_char //SEG181 [81] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG182 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG183 [81] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG182 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG183 [81] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char //SEG184 print_byte::@return //SEG185 [80] return @@ -7739,10 +7792,10 @@ print_byte: { // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG187 [82] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG187 [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG188 [83] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64 -- pbuz1=_inc_pbuz1 + //SEG188 [83] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#66 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -7753,11 +7806,11 @@ print_char: { } //SEG191 print_str // Print a zero-terminated string -// print_str(byte* zeropage($b) str) +// print_str(byte* zeropage($d) str) print_str: { - .label str = $b + .label str = $d //SEG192 [86] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG193 [86] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#105 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG193 [86] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#108 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG194 [86] phi (byte*) print_str::str#10 = (byte*) print_str::str#12 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy //SEG195 print_str::@1 b1: @@ -7789,22 +7842,44 @@ print_str: { } //SEG203 print_sword // Print a signed word as HEX -// print_sword(signed word zeropage($d) w) +// print_sword(signed word zeropage($f) w) print_sword: { - .label w = $d - //SEG204 [92] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + .label w = $f + //SEG204 [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG205 [93] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG206 print_sword::@2 + bmi b1 + //SEG205 [93] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG206 print_sword::@3 //SEG207 [94] call print_char - //SEG208 [81] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG209 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG210 [81] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG208 [81] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG209 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG210 [81] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG211 [95] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG212 [95] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG213 print_sword::@2 + b2: + //SEG214 [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG215 [97] call print_word + //SEG216 [102] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + //SEG217 [102] phi (byte*) print_char_cursor#102 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG218 [102] phi (word) print_word::w#3 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + //SEG219 print_sword::@return + //SEG220 [98] return + rts + //SEG221 [99] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG222 print_sword::@1 + b1: + //SEG223 [100] call print_char + //SEG224 [81] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG225 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG226 [81] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG211 print_sword::@3 - //SEG212 [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG227 print_sword::@4 + //SEG228 [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -7812,87 +7887,74 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG213 [96] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG214 [96] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#2 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG215 [96] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG216 print_sword::@1 - b1: - //SEG217 [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG218 [98] call print_word - //SEG219 [100] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG220 [100] phi (byte*) print_char_cursor#99 = (byte*) print_char_cursor#94 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG221 [100] phi (word) print_word::w#3 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - //SEG222 print_sword::@return - //SEG223 [99] return - rts + jmp b2 } -//SEG224 print_word +//SEG229 print_word // Print a word as HEX -// print_word(word zeropage($d) w) +// print_word(word zeropage($f) w) print_word: { - .label w = $d - //SEG225 [101] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 + .label w = $f + //SEG230 [103] (byte) print_byte::b#1 ← > (word) print_word::w#3 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG226 [102] call print_byte - //SEG227 [73] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG228 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#99 [phi:print_word->print_byte#0] -- register_copy - //SEG229 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG231 [104] call print_byte + //SEG232 [73] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG233 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#102 [phi:print_word->print_byte#0] -- register_copy + //SEG234 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG230 print_word::@1 - //SEG231 [103] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 + //SEG235 print_word::@1 + //SEG236 [105] (byte) print_byte::b#2 ← < (word) print_word::w#3 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG232 [104] call print_byte - //SEG233 [73] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG234 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG235 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG237 [106] call print_byte + //SEG238 [73] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG239 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG240 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG236 print_word::@return - //SEG237 [105] return + //SEG241 print_word::@return + //SEG242 [107] return rts } -//SEG238 print_sbyte +//SEG243 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage($a) b) print_sbyte: { .label b = $a - //SEG239 [106] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG244 [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG240 [107] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG241 print_sbyte::@3 - //SEG242 [108] call print_char - //SEG243 [81] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG244 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG245 [81] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG245 [109] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG246 print_sbyte::@3 + //SEG247 [110] call print_char + //SEG248 [81] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG249 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG250 [81] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG246 [109] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] - //SEG247 [109] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy - //SEG248 print_sbyte::@2 + //SEG251 [111] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG252 [111] phi (signed byte) print_sbyte::b#4 = (signed byte) print_sbyte::b#1 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG253 print_sbyte::@2 b2: - //SEG249 [110] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 - //SEG250 [111] call print_byte - //SEG251 [73] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG252 [73] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG253 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG254 [112] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4 + //SEG255 [113] call print_byte + //SEG256 [73] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG257 [73] phi (byte*) print_char_cursor#103 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG258 [73] phi (byte) print_byte::b#8 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG254 print_sbyte::@return - //SEG255 [112] return + //SEG259 print_sbyte::@return + //SEG260 [114] return rts - //SEG256 [113] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG257 print_sbyte::@1 + //SEG261 [115] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG262 print_sbyte::@1 b1: - //SEG258 [114] call print_char - //SEG259 [81] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG260 [81] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG261 [81] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG263 [116] call print_char + //SEG264 [81] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG265 [81] phi (byte*) print_char_cursor#66 = (byte*) print_char_cursor#2 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG266 [81] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG262 print_sbyte::@4 - //SEG263 [115] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 + //SEG267 print_sbyte::@4 + //SEG268 [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -7900,79 +7962,79 @@ print_sbyte: { sta b jmp b2 } -//SEG264 mul8su +//SEG269 mul8su // Multiply a signed byte and an unsigned byte (into a signed word) // Fixes offsets introduced by using unsigned multiplication // mul8su(signed byte register(Y) a) mul8su: { .const b = sin8u_table.amplitude+1 .label m = $11 - //SEG265 [116] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 -- vbuxx=vbuyy + //SEG270 [118] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0 -- vbuxx=vbuyy tya tax - //SEG266 [117] call mul8u - //SEG267 [126] phi from mul8su to mul8u [phi:mul8su->mul8u] - //SEG268 [126] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8su->mul8u#0] -- register_copy - //SEG269 [126] phi (word) mul8u::mb#0 = (const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vwuz1=vbuc1 + //SEG271 [119] call mul8u + //SEG272 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG273 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8su->mul8u#0] -- register_copy + //SEG274 [128] phi (word) mul8u::mb#0 = (const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vwuz1=vbuc1 lda #b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG270 [118] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG271 mul8su::@3 - //SEG272 [119] (word) mul8su::m#0 ← (word) mul8u::return#2 - //SEG273 [120] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 -- vbsyy_ge_0_then_la1 + //SEG275 [120] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG276 mul8su::@3 + //SEG277 [121] (word) mul8su::m#0 ← (word) mul8u::return#2 + //SEG278 [122] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1 -- vbsyy_ge_0_then_la1 cpy #0 bpl b1 - //SEG274 mul8su::@2 - //SEG275 [121] (byte~) mul8su::$7 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG279 mul8su::@2 + //SEG280 [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG276 [122] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 + //SEG281 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #b - //SEG277 [123] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa + //SEG282 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG278 [124] phi from mul8su::@2 mul8su::@3 to mul8su::@1 [phi:mul8su::@2/mul8su::@3->mul8su::@1] - //SEG279 [124] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@3->mul8su::@1#0] -- register_copy - //SEG280 mul8su::@1 + //SEG283 [126] phi from mul8su::@2 mul8su::@3 to mul8su::@1 [phi:mul8su::@2/mul8su::@3->mul8su::@1] + //SEG284 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@3->mul8su::@1#0] -- register_copy + //SEG285 mul8su::@1 b1: - //SEG281 mul8su::@return - //SEG282 [125] return + //SEG286 mul8su::@return + //SEG287 [127] return rts } -//SEG283 mul8u +//SEG288 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $13 .label res = $11 .label return = $11 - //SEG284 [127] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG285 [127] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG286 [127] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG289 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG290 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG291 [129] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res sta res+1 - //SEG287 [127] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG288 mul8u::@1 + //SEG292 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG293 mul8u::@1 b1: - //SEG289 [128] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG294 [130] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG290 mul8u::@return - //SEG291 [129] return + //SEG295 mul8u::@return + //SEG296 [131] return rts - //SEG292 mul8u::@2 + //SEG297 mul8u::@2 b2: - //SEG293 [130] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG298 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG294 [131] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG299 [133] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG295 mul8u::@4 - //SEG296 [132] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG300 mul8u::@4 + //SEG301 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7980,24 +8042,24 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG297 [133] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] - //SEG298 [133] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy - //SEG299 mul8u::@3 + //SEG302 [135] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG303 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG304 mul8u::@3 b3: - //SEG300 [134] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG305 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG301 [135] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG306 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG302 [127] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] - //SEG303 [127] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG304 [127] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG305 [127] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG307 [129] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG308 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG309 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG310 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG306 sin8s +//SEG311 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -8011,7 +8073,7 @@ sin8s: { .label x3 = $23 .label usinx = $24 .label isUpper = $15 - //SEG307 [136] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG312 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b5 @@ -8020,8 +8082,8 @@ sin8s: { cmp #PI_u4f12 sta x+1 - //SEG310 [138] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] - //SEG311 [138] phi (byte) sin8s::isUpper#10 = (byte) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG315 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG316 [140] phi (byte) sin8s::isUpper#10 = (byte) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG312 [138] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG317 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG313 [138] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG318 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b5: - //SEG314 [138] phi (byte) sin8s::isUpper#10 = (byte) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG319 [140] phi (byte) sin8s::isUpper#10 = (byte) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG315 [138] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy - //SEG316 sin8s::@1 + //SEG320 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG321 sin8s::@1 b1: - //SEG317 [139] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG322 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2 @@ -8052,8 +8114,8 @@ sin8s: { cmp #PI_u4f12 sbc x+1 sta x+1 - //SEG320 [141] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] - //SEG321 [141] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy - //SEG322 sin8s::@2 + //SEG325 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG326 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG327 sin8s::@2 b2: - //SEG323 [142] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 -- vwuz1=vwuz1_rol_3 + //SEG328 [144] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3 -- vwuz1=vwuz1_rol_3 asl _4 rol _4+1 asl _4 rol _4+1 asl _4 rol _4+1 - //SEG324 [143] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 -- vbuz1=_hi_vwuz2 + //SEG329 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$4 -- vbuz1=_hi_vwuz2 lda _4+1 sta x1 - //SEG325 [144] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG330 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 tax - //SEG326 [145] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG331 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 tay - //SEG327 [146] call mulu8_sel - //SEG328 [179] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] - //SEG329 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG332 [148] call mulu8_sel + //SEG333 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG334 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG330 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG331 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG335 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG336 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG332 [147] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 - //SEG333 sin8s::@9 - //SEG334 [148] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG335 [149] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG337 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG338 sin8s::@9 + //SEG339 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG340 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG336 [150] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG341 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG337 [151] call mulu8_sel - //SEG338 [179] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] - //SEG339 [179] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG342 [153] call mulu8_sel + //SEG343 [181] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] + //SEG344 [181] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG340 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@9->mulu8_sel#1] -- register_copy - //SEG341 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@9->mulu8_sel#2] -- register_copy + //SEG345 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@9->mulu8_sel#1] -- register_copy + //SEG346 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@9->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG342 [152] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 - //SEG343 sin8s::@10 - //SEG344 [153] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG347 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG348 sin8s::@10 + //SEG349 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG345 [154] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG350 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 tax - //SEG346 [155] call mulu8_sel - //SEG347 [179] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] - //SEG348 [179] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG351 [157] call mulu8_sel + //SEG352 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG353 [181] phi (byte) mulu8_sel::select#5 = (byte) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG349 [179] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@10->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG354 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@10->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG350 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG355 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG351 [156] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 - //SEG352 sin8s::@11 - //SEG353 [157] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG354 [158] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG356 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG357 sin8s::@11 + //SEG358 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG359 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG355 [159] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG360 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG356 [160] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG361 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG357 [161] call mulu8_sel - //SEG358 [179] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] - //SEG359 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG362 [163] call mulu8_sel + //SEG363 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG364 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG360 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@11->mulu8_sel#1] -- register_copy - //SEG361 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG365 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@11->mulu8_sel#1] -- register_copy + //SEG366 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG362 [162] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 - //SEG363 sin8s::@12 - //SEG364 [163] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG365 [164] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG367 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG368 sin8s::@12 + //SEG369 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG370 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG366 [165] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG371 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG367 [166] call mulu8_sel - //SEG368 [179] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] - //SEG369 [179] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG372 [168] call mulu8_sel + //SEG373 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG374 [181] phi (byte) mulu8_sel::select#5 = (byte) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG370 [179] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG371 [179] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG375 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG376 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG372 [167] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 - //SEG373 sin8s::@13 - //SEG374 [168] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //SEG375 [169] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 + //SEG377 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG378 sin8s::@13 + //SEG379 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG380 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG376 [170] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG381 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG377 [171] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG382 [173] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #$80 bcc b3 - //SEG378 sin8s::@7 - //SEG379 [172] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG383 sin8s::@7 + //SEG384 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG380 [173] phi from sin8s::@13 sin8s::@7 to sin8s::@3 [phi:sin8s::@13/sin8s::@7->sin8s::@3] - //SEG381 [173] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@13/sin8s::@7->sin8s::@3#0] -- register_copy - //SEG382 sin8s::@3 + //SEG385 [175] phi from sin8s::@13 sin8s::@7 to sin8s::@3 [phi:sin8s::@13/sin8s::@7->sin8s::@3] + //SEG386 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@13/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG387 sin8s::@3 b3: - //SEG383 [174] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 -- vbuz1_eq_0_then_la1 + //SEG388 [176] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b14 - //SEG384 sin8s::@8 - //SEG385 [175] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG389 sin8s::@8 + //SEG390 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG386 [176] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] - //SEG387 [176] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy - //SEG388 sin8s::@4 - //SEG389 sin8s::@return - //SEG390 [177] return + //SEG391 [178] phi from sin8s::@14 sin8s::@8 to sin8s::@4 [phi:sin8s::@14/sin8s::@8->sin8s::@4] + //SEG392 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@14/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG393 sin8s::@4 + //SEG394 sin8s::@return + //SEG395 [179] return rts - //SEG391 sin8s::@14 + //SEG396 sin8s::@14 b14: - //SEG392 [178] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG397 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa rts } -//SEG393 mulu8_sel +//SEG398 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip // mulu8_sel(byte register(X) v1, byte register(Y) v2, byte zeropage($18) select) @@ -8204,21 +8266,21 @@ mulu8_sel: { .label _0 = $11 .label _1 = $11 .label select = $18 - //SEG394 [180] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - //SEG395 [181] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG399 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + //SEG400 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG396 [182] call mul8u - //SEG397 [126] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] - //SEG398 [126] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG399 [126] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- vwuz1=vbuaa + //SEG401 [184] call mul8u + //SEG402 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG403 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG404 [128] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG400 [183] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG401 mulu8_sel::@1 - //SEG402 [184] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - //SEG403 [185] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG405 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG406 mulu8_sel::@1 + //SEG407 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + //SEG408 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -8227,30 +8289,30 @@ mulu8_sel: { dey bne !- !e: - //SEG404 [186] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG409 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 - //SEG405 mulu8_sel::@return - //SEG406 [187] return + //SEG410 mulu8_sel::@return + //SEG411 [189] return rts } -//SEG407 div16u +//SEG412 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division div16u: { .label return = $1d - //SEG408 [189] call divr16u - //SEG409 [193] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG413 [191] call divr16u + //SEG414 [195] phi from div16u to divr16u [phi:div16u->divr16u] jsr divr16u - //SEG410 [190] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG411 div16u::@1 - //SEG412 [191] (word) div16u::return#0 ← (word) divr16u::return#2 - //SEG413 div16u::@return - //SEG414 [192] return + //SEG415 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG416 div16u::@1 + //SEG417 [193] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG418 div16u::@return + //SEG419 [194] return rts } -//SEG415 divr16u +//SEG420 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -8261,55 +8323,55 @@ divr16u: { .label dividend = $1b .label quotient = $1d .label return = $1d - //SEG416 [194] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG417 [194] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG421 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG422 [196] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG418 [194] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG423 [196] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG419 [194] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG424 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG420 [194] phi (word) divr16u::rem#4 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG425 [196] phi (word) divr16u::rem#4 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 txa sta rem sta rem+1 - //SEG421 [194] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG422 [194] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG423 [194] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG424 [194] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG425 [194] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG426 divr16u::@1 + //SEG426 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG427 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG428 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG429 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG430 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG431 divr16u::@1 b1: - //SEG427 [195] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG432 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG428 [196] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG433 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG429 [197] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG434 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG430 [198] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG435 [200] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG431 divr16u::@4 - //SEG432 [199] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG436 divr16u::@4 + //SEG437 [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG433 [200] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG434 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG435 divr16u::@2 + //SEG438 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG439 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG440 divr16u::@2 b2: - //SEG436 [201] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG441 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG437 [202] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG442 [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG438 [203] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG443 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3 @@ -8318,13 +8380,13 @@ divr16u: { cmp #main.tabsize sta rem+1 - //SEG442 [206] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG443 [206] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG444 [206] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG445 divr16u::@3 + //SEG447 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG448 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG449 [208] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG450 divr16u::@3 b3: - //SEG446 [207] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG451 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG447 [208] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG452 [210] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG448 divr16u::@return - //SEG449 [209] return + //SEG453 divr16u::@return + //SEG454 [211] return rts } -//SEG450 print_cls +//SEG455 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $1f - //SEG451 [211] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG452 [211] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG456 [213] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG457 [213] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG453 [211] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG454 [211] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG455 print_cls::@1 + //SEG458 [213] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG459 [213] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG460 print_cls::@1 b1: - //SEG456 [212] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG461 [214] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG457 [213] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG462 [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG458 [214] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG463 [216] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG459 print_cls::@return - //SEG460 [215] return + //SEG464 print_cls::@return + //SEG465 [217] return rts } -//SEG461 File Data +//SEG466 File Data print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgenscale8.sym b/src/test/ref/sinusgenscale8.sym index 798dfcc1b..ccf401a2b 100644 --- a/src/test/ref/sinusgenscale8.sym +++ b/src/test/ref/sinusgenscale8.sym @@ -135,19 +135,18 @@ (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#3 reg byte a 4.0 (byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#6 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:15 101.0 -(byte*) print_char_cursor#100 print_char_cursor zp ZP_WORD:15 9.0 -(byte*) print_char_cursor#105 print_char_cursor zp ZP_WORD:15 54.0 -(byte*~) print_char_cursor#113 print_char_cursor zp ZP_WORD:15 22.0 -(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:15 3.454545454545454 -(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:15 12.777777777777777 -(byte*) print_char_cursor#64 print_char_cursor zp ZP_WORD:15 7.0 -(byte*) print_char_cursor#94 print_char_cursor zp ZP_WORD:15 3.0 -(byte*) print_char_cursor#99 print_char_cursor zp ZP_WORD:15 8.5 +(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:11 101.0 +(byte*) print_char_cursor#102 print_char_cursor zp ZP_WORD:11 8.5 +(byte*) print_char_cursor#103 print_char_cursor zp ZP_WORD:11 9.0 +(byte*) print_char_cursor#108 print_char_cursor zp ZP_WORD:11 54.0 +(byte*~) print_char_cursor#116 print_char_cursor zp ZP_WORD:11 22.0 +(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:11 3.2340425531914887 +(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:11 12.321428571428571 +(byte*) print_char_cursor#66 print_char_cursor zp ZP_WORD:11 8.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -179,26 +178,27 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:11 202.0 -(byte*) print_str::str#10 str zp ZP_WORD:11 101.5 -(byte*) print_str::str#12 str zp ZP_WORD:11 2.0 +(byte*) print_str::str#0 str zp ZP_WORD:13 202.0 +(byte*) print_str::str#10 str zp ZP_WORD:13 101.5 +(byte*) print_str::str#12 str zp ZP_WORD:13 2.0 (void()) print_sword((signed word) print_sword::w) (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp ZP_WORD:13 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:13 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:13 4.0 +(signed word) print_sword::w#0 w zp ZP_WORD:15 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:15 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:15 4.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:13 4.0 -(word) print_word::w#1 w zp ZP_WORD:13 4.0 -(word) print_word::w#2 w zp ZP_WORD:13 22.0 -(word) print_word::w#3 w zp ZP_WORD:13 6.333333333333334 +(word) print_word::w#0 w zp ZP_WORD:15 4.0 +(word) print_word::w#1 w zp ZP_WORD:15 4.0 +(word) print_word::w#2 w zp ZP_WORD:15 22.0 +(word) print_word::w#3 w zp ZP_WORD:15 6.333333333333334 (signed byte()) sin8s((word) sin8s::x) (word~) sin8s::$4 $4 zp ZP_WORD:22 4.0 (label) sin8s::@1 @@ -320,10 +320,10 @@ zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -zp ZP_WORD:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -zp ZP_WORD:13 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] -zp ZP_WORD:15 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ] +reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +zp ZP_WORD:11 [ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ] +zp ZP_WORD:13 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ] zp ZP_WORD:17 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mulu8_sel::$0 mulu8_sel::$1 ] reg byte a [ mul8u::b#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] diff --git a/src/test/ref/test-comparisons-sword.asm b/src/test/ref/test-comparisons-sword.asm index 0f3332f5f..6ce36b563 100644 --- a/src/test/ref/test-comparisons-sword.asm +++ b/src/test/ref/test-comparisons-sword.asm @@ -12,7 +12,7 @@ .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = $c + .label print_char_cursor = $a .label print_line_cursor = 5 main: { .label w1 = $11 @@ -105,9 +105,9 @@ print_ln: { rts } // Compare two words using an operator -// compare(signed word zeropage($a) w1, signed word zeropage($13) w2, byte register(X) op) +// compare(signed word zeropage($c) w1, signed word zeropage($13) w2, byte register(X) op) compare: { - .label w1 = $a + .label w1 = $c .label w2 = $13 .label ops = 7 .label r = 9 @@ -303,11 +303,17 @@ print_char: { rts } // Print a signed word as HEX -// print_sword(signed word zeropage($a) w) +// print_sword(signed word zeropage($c) w) print_sword: { - .label w = $a + .label w = $c lda w+1 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_word + rts + b1: lda #'-' jsr print_char sec @@ -317,14 +323,12 @@ print_sword: { lda #0 sbc w+1 sta w+1 - b1: - jsr print_word - rts + jmp b2 } // Print a word as HEX -// print_word(word zeropage($a) w) +// print_word(word zeropage($c) w) print_word: { - .label w = $a + .label w = $c lda w+1 sta print_byte.b jsr print_byte diff --git a/src/test/ref/test-comparisons-sword.cfg b/src/test/ref/test-comparisons-sword.cfg index 4e6cd90ec..30a7b61d5 100644 --- a/src/test/ref/test-comparisons-sword.cfg +++ b/src/test/ref/test-comparisons-sword.cfg @@ -14,7 +14,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@7 [6] (byte*) print_line_cursor#31 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) [6] (byte) main::s#7 ← phi( main/(byte) 0 main::@7/(byte) main::s#10 ) - [6] (byte*) print_char_cursor#80 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#76 ) + [6] (byte*) print_char_cursor#83 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#79 ) [6] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [8] (signed word) main::w1#0 ← *((const signed word[]) swords#0 + (byte~) main::$8) @@ -22,7 +22,7 @@ main::@1: scope:[main] from main main::@7 main::@2: scope:[main] from main::@1 main::@6 [9] (byte*) print_line_cursor#29 ← phi( main::@1/(byte*) print_line_cursor#31 main::@6/(byte*) print_line_cursor#23 ) [9] (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#10 ) - [9] (byte*) print_char_cursor#75 ← phi( main::@1/(byte*) print_char_cursor#80 main::@6/(byte*) print_char_cursor#76 ) + [9] (byte*) print_char_cursor#78 ← phi( main::@1/(byte*) print_char_cursor#83 main::@6/(byte*) print_char_cursor#79 ) [9] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@6/(byte) main::j#1 ) [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [11] (signed word) main::w2#0 ← *((const signed word[]) swords#0 + (byte~) main::$9) @@ -30,7 +30,7 @@ main::@2: scope:[main] from main::@1 main::@6 main::@3: scope:[main] from main::@2 main::@4 [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#29 main::@4/(byte*) print_line_cursor#23 ) [12] (byte) main::s#3 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#10 ) - [12] (byte*) print_char_cursor#67 ← phi( main::@2/(byte*) print_char_cursor#75 main::@4/(byte*) print_char_cursor#76 ) + [12] (byte*) print_char_cursor#70 ← phi( main::@2/(byte*) print_char_cursor#78 main::@4/(byte*) print_char_cursor#79 ) [12] (byte) main::op#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::op#1 ) [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 @@ -51,7 +51,7 @@ main::@10: scope:[main] from main::@5 main::@4: scope:[main] from main::@10 main::@9 [22] (byte*) print_line_cursor#23 ← phi( main::@9/(byte*) print_line_cursor#19 main::@10/(byte*) print_line_cursor#1 ) [22] (byte) main::s#10 ← phi( main::@9/(byte) main::s#1 main::@10/(byte) 0 ) - [22] (byte*) print_char_cursor#76 ← phi( main::@9/(byte*) print_char_cursor#14 main::@10/(byte*~) print_char_cursor#128 ) + [22] (byte*) print_char_cursor#79 ← phi( main::@9/(byte*) print_char_cursor#15 main::@10/(byte*~) print_char_cursor#128 ) [23] (byte) main::op#1 ← ++ (byte) main::op#2 [24] if((byte) main::op#1!=(byte) 6) goto main::@3 to:main::@6 @@ -72,7 +72,7 @@ print_ln: scope:[print_ln] from main::@5 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [31] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 - [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1 + [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [34] return @@ -114,7 +114,7 @@ compare::@21: scope:[compare] from compare::@6 [47] call print_char to:compare::@7 compare::@7: scope:[compare] from compare::@21 compare::@6 - [48] (byte*) print_char_cursor#70 ← phi( compare::@6/(byte*) print_char_cursor#67 compare::@21/(byte*) print_char_cursor#14 ) + [48] (byte*) print_char_cursor#73 ← phi( compare::@6/(byte*) print_char_cursor#70 compare::@21/(byte*) print_char_cursor#15 ) [49] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [50] call print_sword to:compare::@29 @@ -130,12 +130,12 @@ compare::@22: scope:[compare] from compare::@30 [55] call print_char to:compare::@8 compare::@8: scope:[compare] from compare::@22 compare::@30 - [56] (byte*) print_char_cursor#71 ← phi( compare::@30/(byte*) print_char_cursor#2 compare::@22/(byte*) print_char_cursor#14 ) + [56] (byte*) print_char_cursor#74 ← phi( compare::@30/(byte*) print_char_cursor#2 compare::@22/(byte*) print_char_cursor#15 ) [57] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [58] call print_sword to:compare::@31 compare::@31: scope:[compare] from compare::@8 - [59] (byte) print_char::ch#4 ← (byte) compare::r#10 + [59] (byte) print_char::ch#5 ← (byte) compare::r#10 [60] call print_char to:compare::@return compare::@return: scope:[compare] from compare::@31 @@ -186,87 +186,89 @@ compare::@20: scope:[compare] from compare::@1 compare::@28: scope:[compare] from compare::@1 compare::@20 [76] (byte) compare::r#22 ← phi( compare::@1/(const byte) FF#0 compare::@20/(const byte) TT#0 ) to:compare::@6 -print_char: scope:[print_char] from compare::@21 compare::@22 compare::@31 print_byte print_byte::@1 print_sword::@2 - [77] (byte*) print_char_cursor#43 ← phi( compare::@21/(byte*) print_char_cursor#67 compare::@22/(byte*) print_char_cursor#2 compare::@31/(byte*) print_char_cursor#14 print_byte/(byte*) print_char_cursor#63 print_byte::@1/(byte*) print_char_cursor#14 print_sword::@2/(byte*) print_char_cursor#61 ) - [77] (byte) print_char::ch#6 ← phi( compare::@21/(byte) ' ' compare::@22/(byte) ' ' compare::@31/(byte) print_char::ch#4 print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [78] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6 - [79] (byte*) print_char_cursor#14 ← ++ (byte*) print_char_cursor#43 +print_char: scope:[print_char] from compare::@21 compare::@22 compare::@31 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [77] (byte*) print_char_cursor#45 ← phi( compare::@21/(byte*) print_char_cursor#70 compare::@22/(byte*) print_char_cursor#2 compare::@31/(byte*) print_char_cursor#15 print_byte/(byte*) print_char_cursor#15 print_byte::@1/(byte*) print_char_cursor#15 print_sword::@1/(byte*) print_char_cursor#62 print_sword::@3/(byte*) print_char_cursor#62 ) + [77] (byte) print_char::ch#7 ← phi( compare::@21/(byte) ' ' compare::@22/(byte) ' ' compare::@31/(byte) print_char::ch#5 print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [78] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7 + [79] (byte*) print_char_cursor#15 ← ++ (byte*) print_char_cursor#45 to:print_char::@return print_char::@return: scope:[print_char] from print_char [80] return to:@return print_sword: scope:[print_sword] from compare::@7 compare::@8 - [81] (byte*) print_char_cursor#61 ← phi( compare::@7/(byte*) print_char_cursor#70 compare::@8/(byte*) print_char_cursor#71 ) + [81] (byte*) print_char_cursor#62 ← phi( compare::@7/(byte*) print_char_cursor#73 compare::@8/(byte*) print_char_cursor#74 ) [81] (signed word) print_sword::w#3 ← phi( compare::@7/(signed word) print_sword::w#1 compare::@8/(signed word) print_sword::w#2 ) - [82] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [82] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [83] phi() [84] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [86] (byte*) print_char_cursor#60 ← phi( print_sword/(byte*) print_char_cursor#61 print_sword::@3/(byte*) print_char_cursor#14 ) - [86] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 ) - [87] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - [88] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [85] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) + [86] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + [87] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [89] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [88] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [90] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [91] call print_byte +print_sword::@1: scope:[print_sword] from print_sword + [89] phi() + [90] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [91] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 + to:print_sword::@2 +print_word: scope:[print_word] from print_sword::@2 + [92] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [93] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [92] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [93] call print_byte + [94] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [95] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [94] return + [96] return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - [95] (byte*) print_char_cursor#63 ← phi( print_word/(byte*) print_char_cursor#60 print_word::@1/(byte*) print_char_cursor#14 ) - [95] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [96] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [97] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [98] call print_char + [97] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [98] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [99] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [100] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [99] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [100] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [101] call print_char + [101] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [102] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [103] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [102] return + [104] return to:@return print_str: scope:[print_str] from compare::@29 - [103] phi() + [105] phi() to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [104] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#14 print_str::@2/(byte*) print_char_cursor#1 ) - [104] (byte*) print_str::str#2 ← phi( print_str/(byte*) print_str::str#1 print_str::@2/(byte*) print_str::str#0 ) - [105] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 + [106] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#15 print_str::@2/(byte*) print_char_cursor#1 ) + [106] (byte*) print_str::str#2 ← phi( print_str/(byte*) print_str::str#1 print_str::@2/(byte*) print_str::str#0 ) + [107] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [106] return + [108] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [107] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) - [108] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 - [109] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 + [109] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) + [110] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 + [111] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 to:print_str::@1 print_cls: scope:[print_cls] from main - [110] phi() + [112] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [111] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [112] *((byte*) print_cls::sc#2) ← (byte) ' ' - [113] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [114] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [113] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [114] *((byte*) print_cls::sc#2) ← (byte) ' ' + [115] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [116] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [115] return + [117] return to:@return diff --git a/src/test/ref/test-comparisons-sword.log b/src/test/ref/test-comparisons-sword.log index ca7aa199e..b048fd7d9 100644 --- a/src/test/ref/test-comparisons-sword.log +++ b/src/test/ref/test-comparisons-sword.log @@ -58,6 +58,7 @@ Culled Empty Block (label) print_str::@6 Culled Empty Block (label) @7 Culled Empty Block (label) @8 Culled Empty Block (label) @9 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @10 Culled Empty Block (label) @11 Culled Empty Block (label) @12 @@ -96,37 +97,37 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@16 print_str: scope:[print_str] from compare::@39 - (byte*) print_char_cursor#73 ← phi( compare::@39/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#76 ← phi( compare::@39/(byte*) print_char_cursor#23 ) (byte*) print_str::str#4 ← phi( compare::@39/(byte*) print_str::str#1 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#58 ← phi( print_str/(byte*) print_char_cursor#73 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#60 ← phi( print_str/(byte*) print_char_cursor#76 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#2 ← phi( print_str/(byte*) print_str::str#4 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#2) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#30 ← phi( print_str::@1/(byte*) print_char_cursor#58 ) + (byte*) print_char_cursor#31 ← phi( print_str::@1/(byte*) print_char_cursor#60 ) (byte*) print_str::str#3 ← phi( print_str::@1/(byte*) print_str::str#2 ) - *((byte*) print_char_cursor#30) ← *((byte*) print_str::str#3) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#30 + *((byte*) print_char_cursor#31) ← *((byte*) print_str::str#3) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#31 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#31 ← phi( print_str::@1/(byte*) print_char_cursor#58 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#31 + (byte*) print_char_cursor#32 ← phi( print_str::@1/(byte*) print_char_cursor#60 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#32 return to:@return print_ln: scope:[print_ln] from main::@5 - (byte*) print_char_cursor#59 ← phi( main::@5/(byte*) print_char_cursor#68 ) + (byte*) print_char_cursor#61 ← phi( main::@5/(byte*) print_char_cursor#71 ) (byte*) print_line_cursor#17 ← phi( main::@5/(byte*) print_line_cursor#19 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#32 ← phi( print_ln/(byte*) print_char_cursor#59 print_ln::@1/(byte*) print_char_cursor#32 ) + (byte*) print_char_cursor#33 ← phi( print_ln/(byte*) print_char_cursor#61 print_ln::@1/(byte*) print_char_cursor#33 ) (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#17 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#9 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#32 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#33 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -134,111 +135,121 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#10 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#33 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) + (byte*) print_char_cursor#34 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) (byte*) print_line_cursor#11 ← phi( print_ln::@2/(byte*) print_line_cursor#10 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#11 - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#33 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#34 return to:@return print_sword: scope:[print_sword] from compare::@12 compare::@13 - (byte*) print_char_cursor#74 ← phi( compare::@12/(byte*) print_char_cursor#70 compare::@13/(byte*) print_char_cursor#71 ) + (byte*) print_char_cursor#77 ← phi( compare::@12/(byte*) print_char_cursor#73 compare::@13/(byte*) print_char_cursor#74 ) (signed word) print_sword::w#3 ← phi( compare::@12/(signed word) print_sword::w#1 compare::@13/(signed word) print_sword::w#2 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#60 ← phi( print_sword/(byte*) print_char_cursor#74 print_sword::@4/(byte*) print_char_cursor#6 ) - (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#4 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#34 ← phi( print_sword::@1/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#34 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#3 ) - (byte*) print_char_cursor#61 ← phi( print_sword/(byte*) print_char_cursor#74 ) + (byte*) print_char_cursor#62 ← phi( print_sword/(byte*) print_char_cursor#77 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#5 ← phi( print_sword::@2/(signed word) print_sword::w#6 ) - (byte*) print_char_cursor#35 ← phi( print_sword::@2/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#35 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#5 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#4 ← phi( print_sword::@1/(signed word) print_sword::w#6 ) + (byte*) print_char_cursor#35 ← phi( print_sword::@1/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#35 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#36 ← phi( print_sword::@3/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#36 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#3 ) + (byte*) print_char_cursor#63 ← phi( print_sword/(byte*) print_char_cursor#77 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#7 ← phi( print_sword::@3/(signed word) print_sword::w#8 ) + (byte*) print_char_cursor#36 ← phi( print_sword::@3/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#36 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#64 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) + (signed word) print_sword::w#5 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#7 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#5 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#37 ← phi( print_sword::@2/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#37 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#38 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#38 return to:@return -print_word: scope:[print_word] from print_sword::@1 - (byte*) print_char_cursor#62 ← phi( print_sword::@1/(byte*) print_char_cursor#60 ) - (word) print_word::w#1 ← phi( print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from print_sword::@2 + (byte*) print_char_cursor#65 ← phi( print_sword::@2/(byte*) print_char_cursor#64 ) + (word) print_word::w#1 ← phi( print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#1 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#2 ← phi( print_word/(word) print_word::w#1 ) - (byte*) print_char_cursor#37 ← phi( print_word/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#37 + (byte*) print_char_cursor#39 ← phi( print_word/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#39 (byte~) print_word::$2 ← < (word) print_word::w#2 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#38 ← phi( print_word::@1/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#38 + (byte*) print_char_cursor#40 ← phi( print_word::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#40 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#39 ← phi( print_word::@2/(byte*) print_char_cursor#9 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#39 + (byte*) print_char_cursor#41 ← phi( print_word::@2/(byte*) print_char_cursor#10 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#41 return to:@return @16: scope:[] from @4 (byte*) print_screen#8 ← phi( @4/(byte*) print_screen#0 ) - (byte*) print_char_cursor#90 ← phi( @4/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#93 ← phi( @4/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#28 ← phi( @4/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@23 print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) print_char_cursor#63 ← phi( print_word/(byte*) print_char_cursor#62 print_word::@1/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#66 ← phi( print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#9 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4 - (byte) print_char::ch#1 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char 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*) print_char_cursor#40 ← phi( print_byte/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#40 + (byte*) print_char_cursor#42 ← phi( print_byte/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#42 (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f - (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#41 ← phi( print_byte::@1/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#41 + (byte*) print_char_cursor#43 ← phi( print_byte::@1/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#43 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#42 ← phi( print_byte::@2/(byte*) print_char_cursor#12 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#42 + (byte*) print_char_cursor#44 ← phi( print_byte::@2/(byte*) print_char_cursor#13 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#44 return to:@return -print_char: scope:[print_char] from compare::@31 compare::@32 compare::@42 print_byte print_byte::@1 print_sword::@2 - (byte*) print_char_cursor#43 ← phi( compare::@31/(byte*) print_char_cursor#64 compare::@32/(byte*) print_char_cursor#65 compare::@42/(byte*) print_char_cursor#25 print_byte/(byte*) print_char_cursor#63 print_byte::@1/(byte*) print_char_cursor#11 print_sword::@2/(byte*) print_char_cursor#61 ) - (byte) print_char::ch#6 ← phi( compare::@31/(byte) print_char::ch#3 compare::@32/(byte) print_char::ch#5 compare::@42/(byte) print_char::ch#4 print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6 - (byte*) print_char_cursor#14 ← ++ (byte*) print_char_cursor#43 +print_char: scope:[print_char] from compare::@31 compare::@32 compare::@42 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#45 ← phi( compare::@31/(byte*) print_char_cursor#67 compare::@32/(byte*) print_char_cursor#68 compare::@42/(byte*) print_char_cursor#26 print_byte/(byte*) print_char_cursor#66 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@1/(byte*) print_char_cursor#62 print_sword::@3/(byte*) print_char_cursor#63 ) + (byte) print_char::ch#7 ← phi( compare::@31/(byte) print_char::ch#4 compare::@32/(byte) print_char::ch#6 compare::@42/(byte) print_char::ch#5 print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7 + (byte*) print_char_cursor#15 ← ++ (byte*) print_char_cursor#45 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#44 ← phi( print_char/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#44 + (byte*) print_char_cursor#46 ← phi( print_char/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#46 return to:@return print_cls: scope:[print_cls] from main @@ -257,39 +268,39 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#16 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#17 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#45 ← phi( print_cls::@2/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#47 ← phi( print_cls::@2/(byte*) print_char_cursor#17 ) (byte*) print_line_cursor#12 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#12 - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#45 + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#47 return to:@return @23: scope:[] from @16 (byte*) print_screen#7 ← phi( @16/(byte*) print_screen#8 ) - (byte*) print_char_cursor#82 ← phi( @16/(byte*) print_char_cursor#90 ) + (byte*) print_char_cursor#85 ← phi( @16/(byte*) print_char_cursor#93 ) (byte*) print_line_cursor#27 ← phi( @16/(byte*) print_line_cursor#28 ) (signed word[]) swords#0 ← { (number) -$6fed, (number) $12, (number) $7fed } to:@24 main: scope:[main] from @25 - (byte*) print_char_cursor#66 ← phi( @25/(byte*) print_char_cursor#72 ) + (byte*) print_char_cursor#69 ← phi( @25/(byte*) print_char_cursor#75 ) (byte*) print_line_cursor#18 ← phi( @25/(byte*) print_line_cursor#21 ) (byte*) print_screen#4 ← phi( @25/(byte*) print_screen#5 ) call print_cls to:main::@15 main::@15: scope:[main] from main - (byte*) print_char_cursor#46 ← phi( main/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#48 ← phi( main/(byte*) print_char_cursor#18 ) (byte*) print_line_cursor#13 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#13 - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#46 + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#48 (byte) main::s#0 ← (number) 0 (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main::@15 main::@7 (byte*) print_line_cursor#31 ← phi( main::@15/(byte*) print_line_cursor#5 main::@7/(byte*) print_line_cursor#23 ) (byte) main::s#7 ← phi( main::@15/(byte) main::s#0 main::@7/(byte) main::s#10 ) - (byte*) print_char_cursor#80 ← phi( main::@15/(byte*) print_char_cursor#18 main::@7/(byte*) print_char_cursor#77 ) + (byte*) print_char_cursor#83 ← phi( main::@15/(byte*) print_char_cursor#19 main::@7/(byte*) print_char_cursor#80 ) (byte) main::i#2 ← phi( main::@15/(byte) main::i#0 main::@7/(byte) main::i#1 ) (byte~) main::$8 ← (byte) main::i#2 * (const byte) SIZEOF_SIGNED_WORD (signed word) main::w1#0 ← *((signed word[]) swords#0 + (byte~) main::$8) @@ -299,7 +310,7 @@ main::@2: scope:[main] from main::@1 main::@6 (byte) main::i#10 ← phi( main::@1/(byte) main::i#2 main::@6/(byte) main::i#4 ) (byte*) print_line_cursor#29 ← phi( main::@1/(byte*) print_line_cursor#31 main::@6/(byte*) print_line_cursor#26 ) (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#8 ) - (byte*) print_char_cursor#75 ← phi( main::@1/(byte*) print_char_cursor#80 main::@6/(byte*) print_char_cursor#81 ) + (byte*) print_char_cursor#78 ← phi( main::@1/(byte*) print_char_cursor#83 main::@6/(byte*) print_char_cursor#84 ) (signed word) main::w1#2 ← phi( main::@1/(signed word) main::w1#0 main::@6/(signed word) main::w1#4 ) (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@6/(byte) main::j#1 ) (byte~) main::$9 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD @@ -311,7 +322,7 @@ main::@3: scope:[main] from main::@2 main::@4 (byte*) print_line_cursor#25 ← phi( main::@2/(byte*) print_line_cursor#29 main::@4/(byte*) print_line_cursor#30 ) (byte) main::j#7 ← phi( main::@2/(byte) main::j#2 main::@4/(byte) main::j#4 ) (byte) main::s#4 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#6 ) - (byte*) print_char_cursor#67 ← phi( main::@2/(byte*) print_char_cursor#75 main::@4/(byte*) print_char_cursor#76 ) + (byte*) print_char_cursor#70 ← phi( main::@2/(byte*) print_char_cursor#78 main::@4/(byte*) print_char_cursor#79 ) (byte) main::op#2 ← phi( main::@2/(byte) main::op#0 main::@4/(byte) main::op#1 ) (signed word) main::w2#1 ← phi( main::@2/(signed word) main::w2#0 main::@4/(signed word) main::w2#2 ) (signed word) main::w1#1 ← phi( main::@2/(signed word) main::w1#2 main::@4/(signed word) main::w1#3 ) @@ -328,8 +339,8 @@ main::@16: scope:[main] from main::@3 (signed word) main::w1#5 ← phi( main::@3/(signed word) main::w1#1 ) (byte) main::op#4 ← phi( main::@3/(byte) main::op#2 ) (byte) main::s#3 ← phi( main::@3/(byte) main::s#4 ) - (byte*) print_char_cursor#47 ← phi( main::@3/(byte*) print_char_cursor#28 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#47 + (byte*) print_char_cursor#49 ← phi( main::@3/(byte*) print_char_cursor#29 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#49 (byte) main::s#1 ← ++ (byte) main::s#3 (bool~) main::$2 ← (byte) main::s#1 == (number) 3 (bool~) main::$3 ← ! (bool~) main::$2 @@ -339,7 +350,7 @@ main::@4: scope:[main] from main::@16 main::@17 (byte*) print_line_cursor#30 ← phi( main::@16/(byte*) print_line_cursor#22 main::@17/(byte*) print_line_cursor#6 ) (byte) main::i#5 ← phi( main::@16/(byte) main::i#6 main::@17/(byte) main::i#7 ) (byte) main::s#6 ← phi( main::@16/(byte) main::s#1 main::@17/(byte) main::s#9 ) - (byte*) print_char_cursor#76 ← phi( main::@16/(byte*) print_char_cursor#19 main::@17/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#79 ← phi( main::@16/(byte*) print_char_cursor#20 main::@17/(byte*) print_char_cursor#21 ) (byte) main::j#4 ← phi( main::@16/(byte) main::j#5 main::@17/(byte) main::j#6 ) (signed word) main::w2#2 ← phi( main::@16/(signed word) main::w2#3 main::@17/(signed word) main::w2#4 ) (signed word) main::w1#3 ← phi( main::@16/(signed word) main::w1#5 main::@17/(signed word) main::w1#6 ) @@ -354,7 +365,7 @@ main::@5: scope:[main] from main::@16 (signed word) main::w2#5 ← phi( main::@16/(signed word) main::w2#3 ) (signed word) main::w1#7 ← phi( main::@16/(signed word) main::w1#5 ) (byte) main::op#6 ← phi( main::@16/(byte) main::op#4 ) - (byte*) print_char_cursor#68 ← phi( main::@16/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#71 ← phi( main::@16/(byte*) print_char_cursor#20 ) (byte*) print_line_cursor#19 ← phi( main::@16/(byte*) print_line_cursor#22 ) (byte) main::s#2 ← (number) 0 call print_ln @@ -366,15 +377,15 @@ main::@17: scope:[main] from main::@5 (signed word) main::w2#4 ← phi( main::@5/(signed word) main::w2#5 ) (signed word) main::w1#6 ← phi( main::@5/(signed word) main::w1#7 ) (byte) main::op#5 ← phi( main::@5/(byte) main::op#6 ) - (byte*) print_char_cursor#48 ← phi( main::@5/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#50 ← phi( main::@5/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#14 ← phi( main::@5/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#14 - (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#48 + (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#50 to:main::@4 main::@6: scope:[main] from main::@4 (byte*) print_line_cursor#26 ← phi( main::@4/(byte*) print_line_cursor#30 ) (byte) main::s#8 ← phi( main::@4/(byte) main::s#6 ) - (byte*) print_char_cursor#81 ← phi( main::@4/(byte*) print_char_cursor#76 ) + (byte*) print_char_cursor#84 ← phi( main::@4/(byte*) print_char_cursor#79 ) (signed word) main::w1#4 ← phi( main::@4/(signed word) main::w1#3 ) (byte) main::i#4 ← phi( main::@4/(byte) main::i#5 ) (byte) main::j#3 ← phi( main::@4/(byte) main::j#4 ) @@ -384,7 +395,7 @@ main::@6: scope:[main] from main::@4 to:main::@7 main::@7: scope:[main] from main::@6 (byte) main::s#10 ← phi( main::@6/(byte) main::s#8 ) - (byte*) print_char_cursor#77 ← phi( main::@6/(byte*) print_char_cursor#81 ) + (byte*) print_char_cursor#80 ← phi( main::@6/(byte*) print_char_cursor#84 ) (byte*) print_line_cursor#23 ← phi( main::@6/(byte*) print_line_cursor#26 ) (byte) main::i#3 ← phi( main::@6/(byte) main::i#4 ) (byte) main::i#1 ← (byte) main::i#3 + rangenext(0,2) @@ -392,20 +403,20 @@ main::@7: scope:[main] from main::@6 if((bool~) main::$7) goto main::@1 to:main::@9 main::@9: scope:[main] from main::@7 main::@9 - (byte*) print_char_cursor#69 ← phi( main::@7/(byte*) print_char_cursor#77 main::@9/(byte*) print_char_cursor#69 ) + (byte*) print_char_cursor#72 ← phi( main::@7/(byte*) print_char_cursor#80 main::@9/(byte*) print_char_cursor#72 ) (byte*) print_line_cursor#20 ← phi( main::@7/(byte*) print_line_cursor#23 main::@9/(byte*) print_line_cursor#20 ) if(true) goto main::@9 to:main::@return main::@return: scope:[main] from main::@9 - (byte*) print_char_cursor#49 ← phi( main::@9/(byte*) print_char_cursor#69 ) + (byte*) print_char_cursor#51 ← phi( main::@9/(byte*) print_char_cursor#72 ) (byte*) print_line_cursor#15 ← phi( main::@9/(byte*) print_line_cursor#20 ) (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#15 - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#49 + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#51 return to:@return @24: scope:[] from @23 (byte*) print_screen#6 ← phi( @23/(byte*) print_screen#7 ) - (byte*) print_char_cursor#79 ← phi( @23/(byte*) print_char_cursor#82 ) + (byte*) print_char_cursor#82 ← phi( @23/(byte*) print_char_cursor#85 ) (byte*) print_line_cursor#24 ← phi( @23/(byte*) print_line_cursor#27 ) (byte) LT#0 ← (number) 0 (byte) LE#0 ← (number) 1 @@ -417,7 +428,7 @@ main::@return: scope:[main] from main::@9 (byte) TT#0 ← (number) $51 to:@25 compare: scope:[compare] from main::@3 - (byte*) print_char_cursor#104 ← phi( main::@3/(byte*) print_char_cursor#67 ) + (byte*) print_char_cursor#107 ← phi( main::@3/(byte*) print_char_cursor#70 ) (signed word) compare::w2#9 ← phi( main::@3/(signed word) compare::w2#0 ) (signed word) compare::w1#9 ← phi( main::@3/(signed word) compare::w1#0 ) (byte) compare::op#1 ← phi( main::@3/(byte) compare::op#0 ) @@ -428,7 +439,7 @@ compare: scope:[compare] from main::@3 to:compare::@14 compare::@1: scope:[compare] from compare (byte) compare::r#30 ← phi( compare/(byte) compare::r#0 ) - (byte*) print_char_cursor#102 ← phi( compare/(byte*) print_char_cursor#104 ) + (byte*) print_char_cursor#105 ← phi( compare/(byte*) print_char_cursor#107 ) (signed word) compare::w2#1 ← phi( compare/(signed word) compare::w2#9 ) (signed word) compare::w1#1 ← phi( compare/(signed word) compare::w1#9 ) (bool~) compare::$27 ← (signed word) compare::w1#1 < (signed word) compare::w2#1 @@ -438,7 +449,7 @@ compare::@1: scope:[compare] from compare compare::@14: scope:[compare] from compare (byte) compare::r#31 ← phi( compare/(byte) compare::r#0 ) (byte*) compare::ops#16 ← phi( compare/(byte*) compare::ops#0 ) - (byte*) print_char_cursor#105 ← phi( compare/(byte*) print_char_cursor#104 ) + (byte*) print_char_cursor#108 ← phi( compare/(byte*) print_char_cursor#107 ) (signed word) compare::w2#10 ← phi( compare/(signed word) compare::w2#9 ) (signed word) compare::w1#10 ← phi( compare/(signed word) compare::w1#9 ) (byte) compare::op#2 ← phi( compare/(byte) compare::op#1 ) @@ -447,7 +458,7 @@ compare::@14: scope:[compare] from compare to:compare::@15 compare::@2: scope:[compare] from compare::@14 (byte) compare::r#29 ← phi( compare::@14/(byte) compare::r#31 ) - (byte*) print_char_cursor#100 ← phi( compare::@14/(byte*) print_char_cursor#105 ) + (byte*) print_char_cursor#103 ← phi( compare::@14/(byte*) print_char_cursor#108 ) (signed word) compare::w2#2 ← phi( compare::@14/(signed word) compare::w2#10 ) (signed word) compare::w1#2 ← phi( compare::@14/(signed word) compare::w1#10 ) (bool~) compare::$25 ← (signed word) compare::w1#2 <= (signed word) compare::w2#2 @@ -457,7 +468,7 @@ compare::@2: scope:[compare] from compare::@14 compare::@15: scope:[compare] from compare::@14 (byte) compare::r#32 ← phi( compare::@14/(byte) compare::r#31 ) (byte*) compare::ops#15 ← phi( compare::@14/(byte*) compare::ops#16 ) - (byte*) print_char_cursor#106 ← phi( compare::@14/(byte*) print_char_cursor#105 ) + (byte*) print_char_cursor#109 ← phi( compare::@14/(byte*) print_char_cursor#108 ) (signed word) compare::w2#11 ← phi( compare::@14/(signed word) compare::w2#10 ) (signed word) compare::w1#11 ← phi( compare::@14/(signed word) compare::w1#10 ) (byte) compare::op#3 ← phi( compare::@14/(byte) compare::op#2 ) @@ -466,7 +477,7 @@ compare::@15: scope:[compare] from compare::@14 to:compare::@16 compare::@3: scope:[compare] from compare::@15 (byte) compare::r#28 ← phi( compare::@15/(byte) compare::r#32 ) - (byte*) print_char_cursor#99 ← phi( compare::@15/(byte*) print_char_cursor#106 ) + (byte*) print_char_cursor#102 ← phi( compare::@15/(byte*) print_char_cursor#109 ) (signed word) compare::w2#3 ← phi( compare::@15/(signed word) compare::w2#11 ) (signed word) compare::w1#3 ← phi( compare::@15/(signed word) compare::w1#11 ) (bool~) compare::$23 ← (signed word) compare::w1#3 > (signed word) compare::w2#3 @@ -476,7 +487,7 @@ compare::@3: scope:[compare] from compare::@15 compare::@16: scope:[compare] from compare::@15 (byte) compare::r#33 ← phi( compare::@15/(byte) compare::r#32 ) (byte*) compare::ops#14 ← phi( compare::@15/(byte*) compare::ops#15 ) - (byte*) print_char_cursor#107 ← phi( compare::@15/(byte*) print_char_cursor#106 ) + (byte*) print_char_cursor#110 ← phi( compare::@15/(byte*) print_char_cursor#109 ) (signed word) compare::w2#12 ← phi( compare::@15/(signed word) compare::w2#11 ) (signed word) compare::w1#12 ← phi( compare::@15/(signed word) compare::w1#11 ) (byte) compare::op#4 ← phi( compare::@15/(byte) compare::op#3 ) @@ -485,7 +496,7 @@ compare::@16: scope:[compare] from compare::@15 to:compare::@17 compare::@4: scope:[compare] from compare::@16 (byte) compare::r#27 ← phi( compare::@16/(byte) compare::r#33 ) - (byte*) print_char_cursor#97 ← phi( compare::@16/(byte*) print_char_cursor#107 ) + (byte*) print_char_cursor#100 ← phi( compare::@16/(byte*) print_char_cursor#110 ) (signed word) compare::w2#4 ← phi( compare::@16/(signed word) compare::w2#12 ) (signed word) compare::w1#4 ← phi( compare::@16/(signed word) compare::w1#12 ) (bool~) compare::$21 ← (signed word) compare::w1#4 >= (signed word) compare::w2#4 @@ -495,7 +506,7 @@ compare::@4: scope:[compare] from compare::@16 compare::@17: scope:[compare] from compare::@16 (byte) compare::r#24 ← phi( compare::@16/(byte) compare::r#33 ) (byte*) compare::ops#13 ← phi( compare::@16/(byte*) compare::ops#14 ) - (byte*) print_char_cursor#91 ← phi( compare::@16/(byte*) print_char_cursor#107 ) + (byte*) print_char_cursor#94 ← phi( compare::@16/(byte*) print_char_cursor#110 ) (signed word) compare::w2#13 ← phi( compare::@16/(signed word) compare::w2#12 ) (signed word) compare::w1#13 ← phi( compare::@16/(signed word) compare::w1#12 ) (byte) compare::op#5 ← phi( compare::@16/(byte) compare::op#4 ) @@ -504,7 +515,7 @@ compare::@17: scope:[compare] from compare::@16 to:compare::@18 compare::@5: scope:[compare] from compare::@17 (byte) compare::r#26 ← phi( compare::@17/(byte) compare::r#24 ) - (byte*) print_char_cursor#95 ← phi( compare::@17/(byte*) print_char_cursor#91 ) + (byte*) print_char_cursor#98 ← phi( compare::@17/(byte*) print_char_cursor#94 ) (signed word) compare::w2#5 ← phi( compare::@17/(signed word) compare::w2#13 ) (signed word) compare::w1#5 ← phi( compare::@17/(signed word) compare::w1#13 ) (bool~) compare::$19 ← (signed word) compare::w1#5 == (signed word) compare::w2#5 @@ -514,7 +525,7 @@ compare::@5: scope:[compare] from compare::@17 compare::@18: scope:[compare] from compare::@17 (byte) compare::r#16 ← phi( compare::@17/(byte) compare::r#24 ) (byte*) compare::ops#11 ← phi( compare::@17/(byte*) compare::ops#13 ) - (byte*) print_char_cursor#83 ← phi( compare::@17/(byte*) print_char_cursor#91 ) + (byte*) print_char_cursor#86 ← phi( compare::@17/(byte*) print_char_cursor#94 ) (signed word) compare::w2#14 ← phi( compare::@17/(signed word) compare::w2#13 ) (signed word) compare::w1#14 ← phi( compare::@17/(signed word) compare::w1#13 ) (byte) compare::op#6 ← phi( compare::@17/(byte) compare::op#5 ) @@ -524,7 +535,7 @@ compare::@18: scope:[compare] from compare::@17 to:compare::@19 compare::@19: scope:[compare] from compare::@18 (byte) compare::r#25 ← phi( compare::@18/(byte) compare::r#16 ) - (byte*) print_char_cursor#92 ← phi( compare::@18/(byte*) print_char_cursor#83 ) + (byte*) print_char_cursor#95 ← phi( compare::@18/(byte*) print_char_cursor#86 ) (signed word) compare::w2#6 ← phi( compare::@18/(signed word) compare::w2#14 ) (signed word) compare::w1#6 ← phi( compare::@18/(signed word) compare::w1#14 ) (bool~) compare::$17 ← (signed word) compare::w1#6 != (signed word) compare::w2#6 @@ -534,65 +545,65 @@ compare::@19: scope:[compare] from compare::@18 compare::@33: scope:[compare] from compare::@19 compare::@20 (byte) compare::r#17 ← phi( compare::@19/(byte) compare::r#25 compare::@20/(byte) compare::r#1 ) (signed word) compare::w2#21 ← phi( compare::@19/(signed word) compare::w2#6 compare::@20/(signed word) compare::w2#28 ) - (byte*) print_char_cursor#84 ← phi( compare::@19/(byte*) print_char_cursor#92 compare::@20/(byte*) print_char_cursor#93 ) + (byte*) print_char_cursor#87 ← phi( compare::@19/(byte*) print_char_cursor#95 compare::@20/(byte*) print_char_cursor#96 ) (signed word) compare::w1#15 ← phi( compare::@19/(signed word) compare::w1#6 compare::@20/(signed word) compare::w1#22 ) (byte*) compare::ops#1 ← (const string) compare::$29 to:compare::@11 compare::@20: scope:[compare] from compare::@19 (signed word) compare::w2#28 ← phi( compare::@19/(signed word) compare::w2#6 ) - (byte*) print_char_cursor#93 ← phi( compare::@19/(byte*) print_char_cursor#92 ) + (byte*) print_char_cursor#96 ← phi( compare::@19/(byte*) print_char_cursor#95 ) (signed word) compare::w1#22 ← phi( compare::@19/(signed word) compare::w1#6 ) (byte) compare::r#1 ← (byte) TT#0 to:compare::@33 compare::@34: scope:[compare] from compare::@22 compare::@5 (byte) compare::r#18 ← phi( compare::@22/(byte) compare::r#2 compare::@5/(byte) compare::r#26 ) (signed word) compare::w2#22 ← phi( compare::@22/(signed word) compare::w2#29 compare::@5/(signed word) compare::w2#5 ) - (byte*) print_char_cursor#85 ← phi( compare::@22/(byte*) print_char_cursor#94 compare::@5/(byte*) print_char_cursor#95 ) + (byte*) print_char_cursor#88 ← phi( compare::@22/(byte*) print_char_cursor#97 compare::@5/(byte*) print_char_cursor#98 ) (signed word) compare::w1#16 ← phi( compare::@22/(signed word) compare::w1#23 compare::@5/(signed word) compare::w1#5 ) (byte*) compare::ops#2 ← (const string) compare::$30 to:compare::@11 compare::@22: scope:[compare] from compare::@5 (signed word) compare::w2#29 ← phi( compare::@5/(signed word) compare::w2#5 ) - (byte*) print_char_cursor#94 ← phi( compare::@5/(byte*) print_char_cursor#95 ) + (byte*) print_char_cursor#97 ← phi( compare::@5/(byte*) print_char_cursor#98 ) (signed word) compare::w1#23 ← phi( compare::@5/(signed word) compare::w1#5 ) (byte) compare::r#2 ← (byte) TT#0 to:compare::@34 compare::@35: scope:[compare] from compare::@24 compare::@4 (byte) compare::r#19 ← phi( compare::@24/(byte) compare::r#3 compare::@4/(byte) compare::r#27 ) (signed word) compare::w2#23 ← phi( compare::@24/(signed word) compare::w2#30 compare::@4/(signed word) compare::w2#4 ) - (byte*) print_char_cursor#86 ← phi( compare::@24/(byte*) print_char_cursor#96 compare::@4/(byte*) print_char_cursor#97 ) + (byte*) print_char_cursor#89 ← phi( compare::@24/(byte*) print_char_cursor#99 compare::@4/(byte*) print_char_cursor#100 ) (signed word) compare::w1#17 ← phi( compare::@24/(signed word) compare::w1#24 compare::@4/(signed word) compare::w1#4 ) (byte*) compare::ops#3 ← (const string) compare::$31 to:compare::@11 compare::@24: scope:[compare] from compare::@4 (signed word) compare::w2#30 ← phi( compare::@4/(signed word) compare::w2#4 ) - (byte*) print_char_cursor#96 ← phi( compare::@4/(byte*) print_char_cursor#97 ) + (byte*) print_char_cursor#99 ← phi( compare::@4/(byte*) print_char_cursor#100 ) (signed word) compare::w1#24 ← phi( compare::@4/(signed word) compare::w1#4 ) (byte) compare::r#3 ← (byte) TT#0 to:compare::@35 compare::@36: scope:[compare] from compare::@26 compare::@3 (byte) compare::r#20 ← phi( compare::@26/(byte) compare::r#4 compare::@3/(byte) compare::r#28 ) (signed word) compare::w2#24 ← phi( compare::@26/(signed word) compare::w2#31 compare::@3/(signed word) compare::w2#3 ) - (byte*) print_char_cursor#87 ← phi( compare::@26/(byte*) print_char_cursor#98 compare::@3/(byte*) print_char_cursor#99 ) + (byte*) print_char_cursor#90 ← phi( compare::@26/(byte*) print_char_cursor#101 compare::@3/(byte*) print_char_cursor#102 ) (signed word) compare::w1#18 ← phi( compare::@26/(signed word) compare::w1#25 compare::@3/(signed word) compare::w1#3 ) (byte*) compare::ops#4 ← (const string) compare::$32 to:compare::@11 compare::@26: scope:[compare] from compare::@3 (signed word) compare::w2#31 ← phi( compare::@3/(signed word) compare::w2#3 ) - (byte*) print_char_cursor#98 ← phi( compare::@3/(byte*) print_char_cursor#99 ) + (byte*) print_char_cursor#101 ← phi( compare::@3/(byte*) print_char_cursor#102 ) (signed word) compare::w1#25 ← phi( compare::@3/(signed word) compare::w1#3 ) (byte) compare::r#4 ← (byte) TT#0 to:compare::@36 compare::@37: scope:[compare] from compare::@2 compare::@28 (byte) compare::r#21 ← phi( compare::@2/(byte) compare::r#29 compare::@28/(byte) compare::r#5 ) (signed word) compare::w2#25 ← phi( compare::@2/(signed word) compare::w2#2 compare::@28/(signed word) compare::w2#32 ) - (byte*) print_char_cursor#88 ← phi( compare::@2/(byte*) print_char_cursor#100 compare::@28/(byte*) print_char_cursor#101 ) + (byte*) print_char_cursor#91 ← phi( compare::@2/(byte*) print_char_cursor#103 compare::@28/(byte*) print_char_cursor#104 ) (signed word) compare::w1#19 ← phi( compare::@2/(signed word) compare::w1#2 compare::@28/(signed word) compare::w1#26 ) (byte*) compare::ops#5 ← (const string) compare::$33 to:compare::@11 compare::@28: scope:[compare] from compare::@2 (signed word) compare::w2#32 ← phi( compare::@2/(signed word) compare::w2#2 ) - (byte*) print_char_cursor#101 ← phi( compare::@2/(byte*) print_char_cursor#100 ) + (byte*) print_char_cursor#104 ← phi( compare::@2/(byte*) print_char_cursor#103 ) (signed word) compare::w1#26 ← phi( compare::@2/(signed word) compare::w1#2 ) (byte) compare::r#5 ← (byte) TT#0 to:compare::@37 @@ -600,7 +611,7 @@ compare::@11: scope:[compare] from compare::@18 compare::@33 compare::@34 compa (byte) compare::r#14 ← phi( compare::@18/(byte) compare::r#16 compare::@33/(byte) compare::r#17 compare::@34/(byte) compare::r#18 compare::@35/(byte) compare::r#19 compare::@36/(byte) compare::r#20 compare::@37/(byte) compare::r#21 compare::@38/(byte) compare::r#22 ) (signed word) compare::w2#19 ← phi( compare::@18/(signed word) compare::w2#14 compare::@33/(signed word) compare::w2#21 compare::@34/(signed word) compare::w2#22 compare::@35/(signed word) compare::w2#23 compare::@36/(signed word) compare::w2#24 compare::@37/(signed word) compare::w2#25 compare::@38/(signed word) compare::w2#26 ) (byte*) compare::ops#9 ← phi( compare::@18/(byte*) compare::ops#11 compare::@33/(byte*) compare::ops#1 compare::@34/(byte*) compare::ops#2 compare::@35/(byte*) compare::ops#3 compare::@36/(byte*) compare::ops#4 compare::@37/(byte*) compare::ops#5 compare::@38/(byte*) compare::ops#6 ) - (byte*) print_char_cursor#78 ← phi( compare::@18/(byte*) print_char_cursor#83 compare::@33/(byte*) print_char_cursor#84 compare::@34/(byte*) print_char_cursor#85 compare::@35/(byte*) print_char_cursor#86 compare::@36/(byte*) print_char_cursor#87 compare::@37/(byte*) print_char_cursor#88 compare::@38/(byte*) print_char_cursor#89 ) + (byte*) print_char_cursor#81 ← phi( compare::@18/(byte*) print_char_cursor#86 compare::@33/(byte*) print_char_cursor#87 compare::@34/(byte*) print_char_cursor#88 compare::@35/(byte*) print_char_cursor#89 compare::@36/(byte*) print_char_cursor#90 compare::@37/(byte*) print_char_cursor#91 compare::@38/(byte*) print_char_cursor#92 ) (signed word) compare::w1#7 ← phi( compare::@18/(signed word) compare::w1#14 compare::@33/(signed word) compare::w1#15 compare::@34/(signed word) compare::w1#16 compare::@35/(signed word) compare::w1#17 compare::@36/(signed word) compare::w1#18 compare::@37/(signed word) compare::w1#19 compare::@38/(signed word) compare::w1#20 ) (bool~) compare::$7 ← (signed word) compare::w1#7 >= (number) 0 (bool~) compare::$8 ← ! (bool~) compare::$7 @@ -609,13 +620,13 @@ compare::@11: scope:[compare] from compare::@18 compare::@33 compare::@34 compa compare::@38: scope:[compare] from compare::@1 compare::@30 (byte) compare::r#22 ← phi( compare::@1/(byte) compare::r#30 compare::@30/(byte) compare::r#6 ) (signed word) compare::w2#26 ← phi( compare::@1/(signed word) compare::w2#1 compare::@30/(signed word) compare::w2#33 ) - (byte*) print_char_cursor#89 ← phi( compare::@1/(byte*) print_char_cursor#102 compare::@30/(byte*) print_char_cursor#103 ) + (byte*) print_char_cursor#92 ← phi( compare::@1/(byte*) print_char_cursor#105 compare::@30/(byte*) print_char_cursor#106 ) (signed word) compare::w1#20 ← phi( compare::@1/(signed word) compare::w1#1 compare::@30/(signed word) compare::w1#27 ) (byte*) compare::ops#6 ← (const string) compare::$34 to:compare::@11 compare::@30: scope:[compare] from compare::@1 (signed word) compare::w2#33 ← phi( compare::@1/(signed word) compare::w2#1 ) - (byte*) print_char_cursor#103 ← phi( compare::@1/(byte*) print_char_cursor#102 ) + (byte*) print_char_cursor#106 ← phi( compare::@1/(byte*) print_char_cursor#105 ) (signed word) compare::w1#27 ← phi( compare::@1/(signed word) compare::w1#1 ) (byte) compare::r#6 ← (byte) TT#0 to:compare::@38 @@ -623,7 +634,7 @@ compare::@12: scope:[compare] from compare::@11 compare::@41 (byte) compare::r#13 ← phi( compare::@11/(byte) compare::r#14 compare::@41/(byte) compare::r#15 ) (signed word) compare::w2#17 ← phi( compare::@11/(signed word) compare::w2#19 compare::@41/(signed word) compare::w2#20 ) (byte*) compare::ops#8 ← phi( compare::@11/(byte*) compare::ops#9 compare::@41/(byte*) compare::ops#10 ) - (byte*) print_char_cursor#70 ← phi( compare::@11/(byte*) print_char_cursor#78 compare::@41/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#73 ← phi( compare::@11/(byte*) print_char_cursor#81 compare::@41/(byte*) print_char_cursor#25 ) (signed word) compare::w1#8 ← phi( compare::@11/(signed word) compare::w1#7 compare::@41/(signed word) compare::w1#21 ) (signed word) print_sword::w#1 ← (signed word) compare::w1#8 call print_sword @@ -632,16 +643,16 @@ compare::@39: scope:[compare] from compare::@12 (byte) compare::r#11 ← phi( compare::@12/(byte) compare::r#13 ) (signed word) compare::w2#15 ← phi( compare::@12/(signed word) compare::w2#17 ) (byte*) compare::ops#7 ← phi( compare::@12/(byte*) compare::ops#8 ) - (byte*) print_char_cursor#50 ← phi( compare::@12/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#50 + (byte*) print_char_cursor#52 ← phi( compare::@12/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#52 (byte*) print_str::str#1 ← (byte*) compare::ops#7 call print_str to:compare::@40 compare::@40: scope:[compare] from compare::@39 (byte) compare::r#9 ← phi( compare::@39/(byte) compare::r#11 ) (signed word) compare::w2#7 ← phi( compare::@39/(signed word) compare::w2#15 ) - (byte*) print_char_cursor#51 ← phi( compare::@39/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#51 + (byte*) print_char_cursor#53 ← phi( compare::@39/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#53 (bool~) compare::$12 ← (signed word) compare::w2#7 >= (number) 0 (bool~) compare::$13 ← ! (bool~) compare::$12 if((bool~) compare::$13) goto compare::@13 @@ -651,8 +662,8 @@ compare::@31: scope:[compare] from compare::@11 (signed word) compare::w2#27 ← phi( compare::@11/(signed word) compare::w2#19 ) (byte*) compare::ops#12 ← phi( compare::@11/(byte*) compare::ops#9 ) (signed word) compare::w1#28 ← phi( compare::@11/(signed word) compare::w1#7 ) - (byte*) print_char_cursor#64 ← phi( compare::@11/(byte*) print_char_cursor#78 ) - (byte) print_char::ch#3 ← (byte) ' ' + (byte*) print_char_cursor#67 ← phi( compare::@11/(byte*) print_char_cursor#81 ) + (byte) print_char::ch#4 ← (byte) ' ' call print_char to:compare::@41 compare::@41: scope:[compare] from compare::@31 @@ -660,56 +671,56 @@ compare::@41: scope:[compare] from compare::@31 (signed word) compare::w2#20 ← phi( compare::@31/(signed word) compare::w2#27 ) (byte*) compare::ops#10 ← phi( compare::@31/(byte*) compare::ops#12 ) (signed word) compare::w1#21 ← phi( compare::@31/(signed word) compare::w1#28 ) - (byte*) print_char_cursor#52 ← phi( compare::@31/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#52 + (byte*) print_char_cursor#54 ← phi( compare::@31/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#54 to:compare::@12 compare::@13: scope:[compare] from compare::@40 compare::@44 (byte) compare::r#8 ← phi( compare::@40/(byte) compare::r#9 compare::@44/(byte) compare::r#10 ) - (byte*) print_char_cursor#71 ← phi( compare::@40/(byte*) print_char_cursor#23 compare::@44/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#74 ← phi( compare::@40/(byte*) print_char_cursor#24 compare::@44/(byte*) print_char_cursor#28 ) (signed word) compare::w2#8 ← phi( compare::@40/(signed word) compare::w2#7 compare::@44/(signed word) compare::w2#16 ) (signed word) print_sword::w#2 ← (signed word) compare::w2#8 call print_sword to:compare::@42 compare::@42: scope:[compare] from compare::@13 (byte) compare::r#7 ← phi( compare::@13/(byte) compare::r#8 ) - (byte*) print_char_cursor#53 ← phi( compare::@13/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#53 - (byte) print_char::ch#4 ← (byte) compare::r#7 + (byte*) print_char_cursor#55 ← phi( compare::@13/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#55 + (byte) print_char::ch#5 ← (byte) compare::r#7 call print_char to:compare::@43 compare::@43: scope:[compare] from compare::@42 - (byte*) print_char_cursor#54 ← phi( compare::@42/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#54 + (byte*) print_char_cursor#56 ← phi( compare::@42/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#56 to:compare::@return compare::@32: scope:[compare] from compare::@40 (byte) compare::r#12 ← phi( compare::@40/(byte) compare::r#9 ) (signed word) compare::w2#18 ← phi( compare::@40/(signed word) compare::w2#7 ) - (byte*) print_char_cursor#65 ← phi( compare::@40/(byte*) print_char_cursor#23 ) - (byte) print_char::ch#5 ← (byte) ' ' + (byte*) print_char_cursor#68 ← phi( compare::@40/(byte*) print_char_cursor#24 ) + (byte) print_char::ch#6 ← (byte) ' ' call print_char to:compare::@44 compare::@44: scope:[compare] from compare::@32 (byte) compare::r#10 ← phi( compare::@32/(byte) compare::r#12 ) (signed word) compare::w2#16 ← phi( compare::@32/(signed word) compare::w2#18 ) - (byte*) print_char_cursor#55 ← phi( compare::@32/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#55 + (byte*) print_char_cursor#57 ← phi( compare::@32/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#57 to:compare::@13 compare::@return: scope:[compare] from compare::@43 - (byte*) print_char_cursor#56 ← phi( compare::@43/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#56 + (byte*) print_char_cursor#58 ← phi( compare::@43/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#58 return to:@return @25: scope:[] from @24 (byte*) print_screen#5 ← phi( @24/(byte*) print_screen#6 ) - (byte*) print_char_cursor#72 ← phi( @24/(byte*) print_char_cursor#79 ) + (byte*) print_char_cursor#75 ← phi( @24/(byte*) print_char_cursor#82 ) (byte*) print_line_cursor#21 ← phi( @24/(byte*) print_line_cursor#24 ) call main to:@26 @26: scope:[] from @25 - (byte*) print_char_cursor#57 ← phi( @25/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#59 ← phi( @25/(byte*) print_char_cursor#22 ) (byte*) print_line_cursor#16 ← phi( @25/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#16 - (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#57 + (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#59 to:@end @end: scope:[] from @26 @@ -1030,6 +1041,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#4 (byte) print_char::ch#5 (byte) print_char::ch#6 +(byte) print_char::ch#7 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -1042,7 +1054,10 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#105 (byte*) print_char_cursor#106 (byte*) print_char_cursor#107 +(byte*) print_char_cursor#108 +(byte*) print_char_cursor#109 (byte*) print_char_cursor#11 +(byte*) print_char_cursor#110 (byte*) print_char_cursor#12 (byte*) print_char_cursor#13 (byte*) print_char_cursor#14 @@ -1213,13 +1228,14 @@ SYMBOL TABLE SSA (byte*) print_str::str#4 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -1229,6 +1245,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#4 (signed word) print_sword::w#5 (signed word) print_sword::w#6 +(signed word) print_sword::w#7 +(signed word) print_sword::w#8 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -1265,7 +1283,7 @@ Successful SSA optimization PassNAddNumberTypeConversions Adding number conversion cast (signed word) to elements in (signed word[]) swords#0 ← { (signed word)(number) -$6fed, (signed word)(number) $12, (signed word)(number) $7fed } Successful SSA optimization PassNAddArrayNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#4 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#5 Inlining cast (byte) main::s#0 ← (unumber)(number) 0 Inlining cast (byte) main::s#2 ← (unumber)(number) 0 Inlining cast (byte) LT#0 ← (unumber)(number) 0 @@ -1320,40 +1338,40 @@ Finalized signed number type (signed byte) 0 Finalized signed number type (signed byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f -Inversing boolean not [28] (bool~) print_sword::$1 ← (signed word) print_sword::w#3 >= (signed byte) 0 from [27] (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (signed byte) 0 -Inversing boolean not [123] (bool~) main::$3 ← (byte) main::s#1 != (byte) 3 from [122] (bool~) main::$2 ← (byte) main::s#1 == (byte) 3 -Inversing boolean not [165] (bool~) compare::$28 ← (signed word) compare::w1#1 >= (signed word) compare::w2#1 from [164] (bool~) compare::$27 ← (signed word) compare::w1#1 < (signed word) compare::w2#1 -Inversing boolean not [172] (bool~) compare::$26 ← (signed word) compare::w1#2 > (signed word) compare::w2#2 from [171] (bool~) compare::$25 ← (signed word) compare::w1#2 <= (signed word) compare::w2#2 -Inversing boolean not [179] (bool~) compare::$24 ← (signed word) compare::w1#3 <= (signed word) compare::w2#3 from [178] (bool~) compare::$23 ← (signed word) compare::w1#3 > (signed word) compare::w2#3 -Inversing boolean not [186] (bool~) compare::$22 ← (signed word) compare::w1#4 < (signed word) compare::w2#4 from [185] (bool~) compare::$21 ← (signed word) compare::w1#4 >= (signed word) compare::w2#4 -Inversing boolean not [193] (bool~) compare::$20 ← (signed word) compare::w1#5 != (signed word) compare::w2#5 from [192] (bool~) compare::$19 ← (signed word) compare::w1#5 == (signed word) compare::w2#5 -Inversing boolean not [197] (bool~) compare::$6 ← (byte) compare::op#6 != (byte) NE#0 from [196] (bool~) compare::$5 ← (byte) compare::op#6 == (byte) NE#0 -Inversing boolean not [201] (bool~) compare::$18 ← (signed word) compare::w1#6 == (signed word) compare::w2#6 from [200] (bool~) compare::$17 ← (signed word) compare::w1#6 != (signed word) compare::w2#6 -Inversing boolean not [225] (bool~) compare::$8 ← (signed word) compare::w1#7 < (signed byte) 0 from [224] (bool~) compare::$7 ← (signed word) compare::w1#7 >= (signed byte) 0 -Inversing boolean not [241] (bool~) compare::$13 ← (signed word) compare::w2#7 < (signed byte) 0 from [240] (bool~) compare::$12 ← (signed word) compare::w2#7 >= (signed byte) 0 +Inversing boolean not [127] (bool~) main::$3 ← (byte) main::s#1 != (byte) 3 from [126] (bool~) main::$2 ← (byte) main::s#1 == (byte) 3 +Inversing boolean not [169] (bool~) compare::$28 ← (signed word) compare::w1#1 >= (signed word) compare::w2#1 from [168] (bool~) compare::$27 ← (signed word) compare::w1#1 < (signed word) compare::w2#1 +Inversing boolean not [176] (bool~) compare::$26 ← (signed word) compare::w1#2 > (signed word) compare::w2#2 from [175] (bool~) compare::$25 ← (signed word) compare::w1#2 <= (signed word) compare::w2#2 +Inversing boolean not [183] (bool~) compare::$24 ← (signed word) compare::w1#3 <= (signed word) compare::w2#3 from [182] (bool~) compare::$23 ← (signed word) compare::w1#3 > (signed word) compare::w2#3 +Inversing boolean not [190] (bool~) compare::$22 ← (signed word) compare::w1#4 < (signed word) compare::w2#4 from [189] (bool~) compare::$21 ← (signed word) compare::w1#4 >= (signed word) compare::w2#4 +Inversing boolean not [197] (bool~) compare::$20 ← (signed word) compare::w1#5 != (signed word) compare::w2#5 from [196] (bool~) compare::$19 ← (signed word) compare::w1#5 == (signed word) compare::w2#5 +Inversing boolean not [201] (bool~) compare::$6 ← (byte) compare::op#6 != (byte) NE#0 from [200] (bool~) compare::$5 ← (byte) compare::op#6 == (byte) NE#0 +Inversing boolean not [205] (bool~) compare::$18 ← (signed word) compare::w1#6 == (signed word) compare::w2#6 from [204] (bool~) compare::$17 ← (signed word) compare::w1#6 != (signed word) compare::w2#6 +Inversing boolean not [229] (bool~) compare::$8 ← (signed word) compare::w1#7 < (signed byte) 0 from [228] (bool~) compare::$7 ← (signed word) compare::w1#7 >= (signed byte) 0 +Inversing boolean not [245] (bool~) compare::$13 ← (signed word) compare::w2#7 < (signed byte) 0 from [244] (bool~) compare::$12 ← (signed word) compare::w2#7 >= (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#28 (byte*) print_char_cursor#90 (byte*) print_screen#8 (byte*) print_line_cursor#27 (byte*) print_char_cursor#82 (byte*) print_screen#7 (byte*) print_line_cursor#24 (byte*) print_char_cursor#79 (byte*) print_screen#6 (byte*) print_line_cursor#21 (byte*) print_char_cursor#72 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#28 (byte*) print_char_cursor#93 (byte*) print_screen#8 (byte*) print_line_cursor#27 (byte*) print_char_cursor#85 (byte*) print_screen#7 (byte*) print_line_cursor#24 (byte*) print_char_cursor#82 (byte*) print_screen#6 (byte*) print_line_cursor#21 (byte*) print_char_cursor#75 (byte*) print_screen#5 Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#58 (byte*) print_char_cursor#31 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#3 (byte*) print_line_cursor#11 (byte*) print_char_cursor#33 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#36 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#61 = (byte*) print_char_cursor#74 -Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#5 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#6 +Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#60 (byte*) print_char_cursor#32 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#3 (byte*) print_line_cursor#11 (byte*) print_char_cursor#34 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#62 = (byte*) print_char_cursor#77 (byte*) print_char_cursor#63 +Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#4 (signed word) print_sword::w#8 (signed word) print_sword::w#7 +Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#5 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 +Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#6 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#38 (byte*) print_char_cursor#8 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#9 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#38 (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#41 (byte*) print_char_cursor#11 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#41 (byte*) print_char_cursor#42 (byte*) print_char_cursor#13 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#44 (byte*) print_char_cursor#15 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#16 (byte*) print_char_cursor#45 (byte*) print_line_cursor#4 (byte*) print_char_cursor#17 +Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#42 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#43 (byte*) print_char_cursor#44 (byte*) print_char_cursor#14 +Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#46 (byte*) print_char_cursor#16 +Alias (byte*) print_line_cursor#12 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#17 (byte*) print_char_cursor#47 (byte*) print_line_cursor#4 (byte*) print_char_cursor#18 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#46 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#48 Alias (byte) main::s#3 = (byte) main::s#4 Alias (byte) main::op#2 = (byte) main::op#4 (byte) main::op#6 (byte) main::op#5 Alias (signed word) main::w1#1 = (signed word) main::w1#5 (signed word) main::w1#7 (signed word) main::w1#6 @@ -1361,41 +1379,41 @@ Alias (signed word) main::w2#1 = (signed word) main::w2#3 (signed word) main::w2 Alias (byte) main::j#5 = (byte) main::j#7 (byte) main::j#8 (byte) main::j#6 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#25 Alias (byte) main::i#6 = (byte) main::i#8 (byte) main::i#9 (byte) main::i#7 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#68 +Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#71 Alias (byte) main::s#2 = (byte) main::s#9 Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#48 +Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#50 Alias (byte) main::j#3 = (byte) main::j#4 Alias (byte) main::i#3 = (byte) main::i#4 (byte) main::i#5 Alias (signed word) main::w1#3 = (signed word) main::w1#4 -Alias (byte*) print_char_cursor#76 = (byte*) print_char_cursor#81 (byte*) print_char_cursor#77 +Alias (byte*) print_char_cursor#79 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#80 Alias (byte) main::s#10 = (byte) main::s#8 (byte) main::s#6 Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#30 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#69 +Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#72 Alias (signed word) compare::w1#1 = (signed word) compare::w1#9 (signed word) compare::w1#10 (signed word) compare::w1#2 (signed word) compare::w1#11 (signed word) compare::w1#3 (signed word) compare::w1#12 (signed word) compare::w1#4 (signed word) compare::w1#13 (signed word) compare::w1#5 (signed word) compare::w1#14 (signed word) compare::w1#6 (signed word) compare::w1#22 (signed word) compare::w1#23 (signed word) compare::w1#24 (signed word) compare::w1#25 (signed word) compare::w1#26 (signed word) compare::w1#27 Alias (signed word) compare::w2#1 = (signed word) compare::w2#9 (signed word) compare::w2#10 (signed word) compare::w2#2 (signed word) compare::w2#11 (signed word) compare::w2#3 (signed word) compare::w2#12 (signed word) compare::w2#4 (signed word) compare::w2#13 (signed word) compare::w2#5 (signed word) compare::w2#14 (signed word) compare::w2#6 (signed word) compare::w2#28 (signed word) compare::w2#29 (signed word) compare::w2#30 (signed word) compare::w2#31 (signed word) compare::w2#32 (signed word) compare::w2#33 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#102 (byte*) print_char_cursor#104 (byte*) print_char_cursor#105 (byte*) print_char_cursor#106 (byte*) print_char_cursor#99 (byte*) print_char_cursor#107 (byte*) print_char_cursor#97 (byte*) print_char_cursor#91 (byte*) print_char_cursor#95 (byte*) print_char_cursor#83 (byte*) print_char_cursor#92 (byte*) print_char_cursor#93 (byte*) print_char_cursor#94 (byte*) print_char_cursor#96 (byte*) print_char_cursor#98 (byte*) print_char_cursor#101 (byte*) print_char_cursor#103 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#105 (byte*) print_char_cursor#107 (byte*) print_char_cursor#108 (byte*) print_char_cursor#103 (byte*) print_char_cursor#109 (byte*) print_char_cursor#102 (byte*) print_char_cursor#110 (byte*) print_char_cursor#94 (byte*) print_char_cursor#98 (byte*) print_char_cursor#86 (byte*) print_char_cursor#95 (byte*) print_char_cursor#96 (byte*) print_char_cursor#97 (byte*) print_char_cursor#99 (byte*) print_char_cursor#101 (byte*) print_char_cursor#104 (byte*) print_char_cursor#106 Alias (byte) compare::r#0 = (byte) compare::r#30 (byte) compare::r#31 (byte) compare::r#29 (byte) compare::r#32 (byte) compare::r#28 (byte) compare::r#33 (byte) compare::r#27 (byte) compare::r#24 (byte) compare::r#26 (byte) compare::r#16 (byte) compare::r#25 Alias (byte) compare::op#1 = (byte) compare::op#2 (byte) compare::op#3 (byte) compare::op#4 (byte) compare::op#5 (byte) compare::op#6 Alias (byte*) compare::ops#0 = (byte*) compare::ops#16 (byte*) compare::ops#15 (byte*) compare::ops#14 (byte*) compare::ops#13 (byte*) compare::ops#11 Alias (byte*) compare::ops#7 = (byte*) compare::ops#8 Alias (signed word) compare::w2#15 = (signed word) compare::w2#17 (signed word) compare::w2#7 (signed word) compare::w2#18 (signed word) compare::w2#16 Alias (byte) compare::r#10 = (byte) compare::r#11 (byte) compare::r#13 (byte) compare::r#9 (byte) compare::r#12 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#65 -Alias (byte*) print_char_cursor#64 = (byte*) print_char_cursor#78 +Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#52 +Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#68 +Alias (byte*) print_char_cursor#67 = (byte*) print_char_cursor#81 Alias (signed word) compare::w1#21 = (signed word) compare::w1#28 (signed word) compare::w1#7 Alias (byte*) compare::ops#10 = (byte*) compare::ops#12 (byte*) compare::ops#9 Alias (signed word) compare::w2#19 = (signed word) compare::w2#27 (signed word) compare::w2#20 Alias (byte) compare::r#14 = (byte) compare::r#23 (byte) compare::r#15 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#52 +Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#54 Alias (byte) compare::r#7 = (byte) compare::r#8 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#54 (byte*) print_char_cursor#56 (byte*) print_char_cursor#28 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#55 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#55 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#58 (byte*) print_char_cursor#29 +Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#57 Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#57 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#59 Successful SSA optimization Pass2AliasElimination Alias (byte) main::op#2 = (byte) main::op#3 Alias (signed word) main::w1#1 = (signed word) main::w1#3 @@ -1403,7 +1421,7 @@ Alias (signed word) main::w2#1 = (signed word) main::w2#2 Alias (byte) main::j#3 = (byte) main::j#5 Alias (byte) main::i#3 = (byte) main::i#6 Alias (signed word) compare::w1#1 = (signed word) compare::w1#15 (signed word) compare::w1#16 (signed word) compare::w1#17 (signed word) compare::w1#18 (signed word) compare::w1#19 (signed word) compare::w1#20 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#86 (byte*) print_char_cursor#87 (byte*) print_char_cursor#88 (byte*) print_char_cursor#89 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#87 (byte*) print_char_cursor#88 (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#91 (byte*) print_char_cursor#92 Alias (signed word) compare::w2#1 = (signed word) compare::w2#21 (signed word) compare::w2#22 (signed word) compare::w2#23 (signed word) compare::w2#24 (signed word) compare::w2#25 (signed word) compare::w2#26 Alias (signed word) compare::w1#21 = (signed word) compare::w1#8 Alias (byte*) compare::ops#10 = (byte*) compare::ops#7 @@ -1411,87 +1429,93 @@ Alias (signed word) compare::w2#15 = (signed word) compare::w2#19 (signed word) Alias (byte) compare::r#10 = (byte) compare::r#14 (byte) compare::r#7 Successful SSA optimization Pass2AliasElimination Alias (signed word) compare::w1#1 = (signed word) compare::w1#21 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#64 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#67 Alias (signed word) compare::w2#1 = (signed word) compare::w2#15 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#32 +Self Phi Eliminated (byte*) print_char_cursor#33 Self Phi Eliminated (byte*) print_line_cursor#12 Self Phi Eliminated (signed word) main::w1#1 Self Phi Eliminated (signed word) main::w2#1 Self Phi Eliminated (byte) main::j#3 Self Phi Eliminated (byte) main::i#3 Self Phi Eliminated (byte*) print_line_cursor#15 -Self Phi Eliminated (byte*) print_char_cursor#21 +Self Phi Eliminated (byte*) print_char_cursor#22 Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte*) print_str::str#4 (byte*) print_str::str#1 -Identical Phi Values (byte*) print_char_cursor#73 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#76 (byte*) print_char_cursor#23 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#19 -Identical Phi Values (byte*) print_char_cursor#59 (byte*) print_char_cursor#19 -Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#59 -Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#61 (byte*) print_char_cursor#20 +Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#61 +Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_char_cursor#15 +Identical Phi Values (byte*) print_char_cursor#36 (byte*) print_char_cursor#15 +Identical Phi Values (byte*) print_char_cursor#37 (byte*) print_char_cursor#10 Identical Phi Values (word) print_word::w#1 (word) print_word::w#0 -Identical Phi Values (byte*) print_char_cursor#62 (byte*) print_char_cursor#60 -Identical Phi Values (byte*) print_char_cursor#37 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#14 -Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#65 (byte*) print_char_cursor#64 +Identical Phi Values (byte*) print_char_cursor#39 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#15 +Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#15 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_screen#1 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#66 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#69 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#12 -Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_line_cursor#12 +Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_line_cursor#12 Identical Phi Values (signed word) main::w1#1 (signed word) main::w1#2 Identical Phi Values (signed word) main::w2#1 (signed word) main::w2#0 Identical Phi Values (byte) main::j#3 (byte) main::j#2 Identical Phi Values (byte) main::i#3 (byte) main::i#10 -Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#27 Identical Phi Values (byte*) print_line_cursor#14 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#23 -Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#76 +Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#79 Identical Phi Values (byte) compare::op#1 (byte) compare::op#0 Identical Phi Values (signed word) compare::w1#1 (signed word) compare::w1#0 Identical Phi Values (signed word) compare::w2#1 (signed word) compare::w2#0 -Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#67 -Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#34 -Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#2 -Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#14 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#34 -Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#14 -Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#70 +Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#37 +Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#2 +Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#15 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#37 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#15 +Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#15 Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#15 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#22 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#64 (byte*) print_char_cursor#15 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#66 (byte*) print_char_cursor#15 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [29] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_cls::$1 [89] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) main::$3 [124] if((byte) main::s#1!=(byte) 3) goto main::@4 -Simple Condition (bool~) main::$5 [128] if((byte) main::op#1!=rangelast(0,5)) goto main::@3 -Simple Condition (bool~) main::$6 [138] if((byte) main::j#1!=rangelast(0,2)) goto main::@2 -Simple Condition (bool~) main::$7 [142] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 -Simple Condition (bool~) compare::$0 [162] if((byte) compare::op#0==(byte) LT#0) goto compare::@1 -Simple Condition (bool~) compare::$28 [166] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@38 -Simple Condition (bool~) compare::$1 [169] if((byte) compare::op#0==(byte) LE#0) goto compare::@2 -Simple Condition (bool~) compare::$26 [173] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@37 -Simple Condition (bool~) compare::$2 [176] if((byte) compare::op#0==(byte) GT#0) goto compare::@3 -Simple Condition (bool~) compare::$24 [180] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@36 -Simple Condition (bool~) compare::$3 [183] if((byte) compare::op#0==(byte) GE#0) goto compare::@4 -Simple Condition (bool~) compare::$22 [187] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@35 -Simple Condition (bool~) compare::$4 [190] if((byte) compare::op#0==(byte) EQ#0) goto compare::@5 -Simple Condition (bool~) compare::$20 [194] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@34 -Simple Condition (bool~) compare::$6 [198] if((byte) compare::op#0!=(byte) NE#0) goto compare::@11 -Simple Condition (bool~) compare::$18 [202] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@33 -Simple Condition (bool~) compare::$8 [226] if((signed word) compare::w1#0<(signed byte) 0) goto compare::@12 -Simple Condition (bool~) compare::$13 [242] if((signed word) compare::w2#0<(signed byte) 0) goto compare::@13 +Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [28] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_cls::$1 [93] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) main::$3 [128] if((byte) main::s#1!=(byte) 3) goto main::@4 +Simple Condition (bool~) main::$5 [132] if((byte) main::op#1!=rangelast(0,5)) goto main::@3 +Simple Condition (bool~) main::$6 [142] if((byte) main::j#1!=rangelast(0,2)) goto main::@2 +Simple Condition (bool~) main::$7 [146] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 +Simple Condition (bool~) compare::$0 [166] if((byte) compare::op#0==(byte) LT#0) goto compare::@1 +Simple Condition (bool~) compare::$28 [170] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@38 +Simple Condition (bool~) compare::$1 [173] if((byte) compare::op#0==(byte) LE#0) goto compare::@2 +Simple Condition (bool~) compare::$26 [177] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@37 +Simple Condition (bool~) compare::$2 [180] if((byte) compare::op#0==(byte) GT#0) goto compare::@3 +Simple Condition (bool~) compare::$24 [184] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@36 +Simple Condition (bool~) compare::$3 [187] if((byte) compare::op#0==(byte) GE#0) goto compare::@4 +Simple Condition (bool~) compare::$22 [191] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@35 +Simple Condition (bool~) compare::$4 [194] if((byte) compare::op#0==(byte) EQ#0) goto compare::@5 +Simple Condition (bool~) compare::$20 [198] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@34 +Simple Condition (bool~) compare::$6 [202] if((byte) compare::op#0!=(byte) NE#0) goto compare::@11 +Simple Condition (bool~) compare::$18 [206] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@33 +Simple Condition (bool~) compare::$8 [230] if((signed word) compare::w1#0<(signed byte) 0) goto compare::@12 +Simple Condition (bool~) compare::$13 [246] if((signed word) compare::w2#0<(signed byte) 0) goto compare::@13 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [98] (signed word[]) swords#0 ← { (signed word) -$6fed, (signed word) $12, (signed word) $7fed } +Constant right-side identified [102] (signed word[]) swords#0 ← { (signed word) -$6fed, (signed word) $12, (signed word) $7fed } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' +Constant (const byte) print_char::ch#1 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const signed word[]) swords#0 = { -$6fed, $12, $7fed } Constant (const byte) main::s#0 = 0 @@ -1514,8 +1538,8 @@ Constant (const byte*) compare::ops#3 = compare::$31 Constant (const byte*) compare::ops#4 = compare::$32 Constant (const byte*) compare::ops#5 = compare::$33 Constant (const byte*) compare::ops#6 = compare::$34 -Constant (const byte) print_char::ch#3 = ' ' -Constant (const byte) print_char::ch#5 = ' ' +Constant (const byte) print_char::ch#4 = ' ' +Constant (const byte) print_char::ch#6 = ' ' Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte) compare::r#0 = FF#0 @@ -1526,14 +1550,14 @@ Constant (const byte) compare::r#4 = TT#0 Constant (const byte) compare::r#5 = TT#0 Constant (const byte) compare::r#6 = TT#0 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [144] if(true) goto main::@9 +if() condition always true - replacing block destination [148] if(true) goto main::@9 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [126] main::op#1 ← ++ main::op#2 to ++ -Resolved ranged comparison value [128] if(main::op#1!=rangelast(0,5)) goto main::@3 to (number) 6 -Resolved ranged next value [136] main::j#1 ← ++ main::j#2 to ++ -Resolved ranged comparison value [138] if(main::j#1!=rangelast(0,2)) goto main::@2 to (number) 3 -Resolved ranged next value [140] main::i#1 ← ++ main::i#10 to ++ -Resolved ranged comparison value [142] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 +Resolved ranged next value [130] main::op#1 ← ++ main::op#2 to ++ +Resolved ranged comparison value [132] if(main::op#1!=rangelast(0,5)) goto main::@3 to (number) 6 +Resolved ranged next value [140] main::j#1 ← ++ main::j#2 to ++ +Resolved ranged comparison value [142] if(main::j#1!=rangelast(0,2)) goto main::@2 to (number) 3 +Resolved ranged next value [144] main::i#1 ← ++ main::i#10 to ++ +Resolved ranged comparison value [146] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Adding number conversion cast (unumber) 6 in if((byte) main::op#1!=(number) 6) goto main::@3 @@ -1554,16 +1578,17 @@ Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (signed word) main::w1#2 (signed word) main::w1#0 Identical Phi Values (byte) main::i#10 (byte) main::i#2 Successful SSA optimization Pass2IdenticalPhiElimination -Constant right-side identified [38] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [39] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Successful SSA optimization Pass2ConstantIdentification -Rewriting multiplication to use shift [42] (byte~) main::$8 ← (byte) main::i#2 * (const byte) SIZEOF_SIGNED_WORD -Rewriting multiplication to use shift [45] (byte~) main::$9 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift [43] (byte~) main::$8 ← (byte) main::i#2 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift [46] (byte~) main::$9 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte) print_char::ch#0 -Inlining constant with var siblings (const byte) print_char::ch#3 -Inlining constant with var siblings (const byte) print_char::ch#5 +Inlining constant with var siblings (const byte) print_char::ch#1 +Inlining constant with var siblings (const byte) print_char::ch#4 +Inlining constant with var siblings (const byte) print_char::ch#6 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte) main::s#0 Inlining constant with var siblings (const byte) main::i#0 @@ -1592,6 +1617,7 @@ Constant inlined compare::r#0 = (const byte) FF#0 Constant inlined compare::r#3 = (const byte) TT#0 Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined compare::r#2 = (const byte) TT#0 +Constant inlined print_char::ch#6 = (byte) ' ' Constant inlined compare::r#5 = (const byte) TT#0 Constant inlined compare::r#4 = (const byte) TT#0 Constant inlined compare::$34 = (const byte*) compare::ops#6 @@ -1606,10 +1632,10 @@ Constant inlined compare::$31 = (const byte*) compare::ops#3 Constant inlined compare::$32 = (const byte*) compare::ops#4 Constant inlined compare::$33 = (const byte*) compare::ops#5 Constant inlined main::s#2 = (byte) 0 -Constant inlined print_char::ch#3 = (byte) ' ' Constant inlined compare::r#6 = (const byte) TT#0 -Constant inlined print_char::ch#5 = (byte) ' ' +Constant inlined print_char::ch#4 = (byte) ' ' Constant inlined compare::$29 = (const byte*) compare::ops#1 +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' Successful SSA optimization Pass2ConstantInlining Inlining constant with var siblings (const byte*) compare::ops#1 @@ -1627,7 +1653,6 @@ Inlining constant with var siblings (const byte*) compare::ops#4 Inlining constant with var siblings (const byte*) compare::ops#5 Inlining constant with var siblings (const byte*) compare::ops#6 Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting main::@18(between main::@7 and main::@1) Added new block during phi lifting main::@19(between main::@6 and main::@2) @@ -1655,7 +1680,7 @@ Adding NOP phi() at start of compare::@24 Adding NOP phi() at start of compare::@26 Adding NOP phi() at start of compare::@28 Adding NOP phi() at start of compare::@30 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 Adding NOP phi() at start of print_cls @@ -1664,72 +1689,69 @@ CALL GRAPH Calls in [] to main:6 Calls in [main] to print_cls:10 compare:28 print_ln:32 Calls in [compare] to print_char:78 print_sword:84 print_str:86 print_char:89 print_sword:95 print_char:99 -Calls in [print_sword] to print_char:131 print_word:137 -Calls in [print_word] to print_byte:145 print_byte:149 -Calls in [print_byte] to print_char:157 print_char:162 +Calls in [print_sword] to print_char:131 print_word:135 print_char:139 +Calls in [print_word] to print_byte:144 print_byte:147 +Calls in [print_byte] to print_char:155 print_char:160 -Created 37 initial phi equivalence classes -Coalesced [15] print_char_cursor#123 ← print_char_cursor#80 +Created 35 initial phi equivalence classes +Coalesced [15] print_char_cursor#123 ← print_char_cursor#83 Coalesced [16] main::s#12 ← main::s#7 Coalesced [17] print_line_cursor#35 ← print_line_cursor#31 -Coalesced [21] print_char_cursor#125 ← print_char_cursor#75 +Coalesced [21] print_char_cursor#125 ← print_char_cursor#78 Coalesced [22] main::s#14 ← main::s#5 Coalesced [23] print_line_cursor#37 ← print_line_cursor#29 Not coalescing [33] print_char_cursor#128 ← print_line_cursor#1 Coalesced [34] print_line_cursor#40 ← print_line_cursor#1 Coalesced [43] main::i#11 ← main::i#1 -Coalesced [44] print_char_cursor#122 ← print_char_cursor#76 +Coalesced [44] print_char_cursor#122 ← print_char_cursor#79 Coalesced [45] main::s#11 ← main::s#10 Coalesced [46] print_line_cursor#34 ← print_line_cursor#23 Coalesced [47] main::j#9 ← main::j#1 -Coalesced (already) [48] print_char_cursor#124 ← print_char_cursor#76 +Coalesced (already) [48] print_char_cursor#124 ← print_char_cursor#79 Coalesced (already) [49] main::s#13 ← main::s#10 Coalesced (already) [50] print_line_cursor#36 ← print_line_cursor#23 Coalesced [51] main::op#7 ← main::op#1 -Coalesced (already) [52] print_char_cursor#126 ← print_char_cursor#76 +Coalesced (already) [52] print_char_cursor#126 ← print_char_cursor#79 Coalesced (already) [53] main::s#15 ← main::s#10 Coalesced (already) [54] print_line_cursor#38 ← print_line_cursor#23 -Coalesced [55] print_char_cursor#127 ← print_char_cursor#14 +Coalesced [55] print_char_cursor#127 ← print_char_cursor#15 Coalesced [56] main::s#16 ← main::s#1 Coalesced (already) [57] print_line_cursor#39 ← print_line_cursor#19 Coalesced [58] print_line_cursor#32 ← print_line_cursor#19 Coalesced (already) [64] print_line_cursor#33 ← print_line_cursor#1 Coalesced [74] compare::r#34 ← compare::r#17 -Coalesced [77] print_char_cursor#116 ← print_char_cursor#67 -Coalesced [79] print_char_cursor#130 ← print_char_cursor#14 -Coalesced [82] print_sword::w#7 ← print_sword::w#1 -Coalesced [83] print_char_cursor#110 ← print_char_cursor#70 -Coalesced [88] print_char_cursor#117 ← print_char_cursor#2 -Coalesced [90] print_char_cursor#132 ← print_char_cursor#14 -Coalesced [93] print_sword::w#8 ← print_sword::w#2 -Coalesced (already) [94] print_char_cursor#111 ← print_char_cursor#71 -Coalesced [97] print_char::ch#7 ← print_char::ch#4 -Coalesced (already) [98] print_char_cursor#118 ← print_char_cursor#14 +Coalesced [77] print_char_cursor#115 ← print_char_cursor#70 +Coalesced [79] print_char_cursor#130 ← print_char_cursor#15 +Coalesced [82] print_sword::w#9 ← print_sword::w#1 +Coalesced [83] print_char_cursor#113 ← print_char_cursor#73 +Coalesced [88] print_char_cursor#116 ← print_char_cursor#2 +Coalesced [90] print_char_cursor#132 ← print_char_cursor#15 +Coalesced [93] print_sword::w#10 ← print_sword::w#2 +Coalesced (already) [94] print_char_cursor#114 ← print_char_cursor#74 +Coalesced [97] print_char::ch#8 ← print_char::ch#5 +Coalesced (already) [98] print_char_cursor#117 ← print_char_cursor#15 Coalesced (already) [102] print_char_cursor#131 ← print_char_cursor#2 -Coalesced (already) [103] print_char_cursor#129 ← print_char_cursor#67 +Coalesced (already) [103] print_char_cursor#129 ← print_char_cursor#70 Coalesced [107] compare::r#35 ← compare::r#18 Coalesced [111] compare::r#36 ← compare::r#19 Coalesced [115] compare::r#37 ← compare::r#20 Coalesced [119] compare::r#38 ← compare::r#21 Coalesced [123] compare::r#39 ← compare::r#22 -Coalesced (already) [130] print_char_cursor#121 ← print_char_cursor#61 -Coalesced [133] print_sword::w#10 ← print_sword::w#0 -Coalesced [134] print_char_cursor#113 ← print_char_cursor#14 -Coalesced [140] print_sword::w#9 ← print_sword::w#3 -Coalesced (already) [141] print_char_cursor#112 ← print_char_cursor#61 +Coalesced (already) [130] print_char_cursor#121 ← print_char_cursor#62 +Coalesced [132] print_sword::w#12 ← print_sword::w#3 +Coalesced (already) [138] print_char_cursor#120 ← print_char_cursor#62 +Coalesced [141] print_sword::w#11 ← print_sword::w#0 Coalesced [143] print_byte::b#4 ← print_byte::b#0 -Coalesced [144] print_char_cursor#114 ← print_char_cursor#60 -Coalesced [147] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [148] print_char_cursor#115 ← print_char_cursor#14 -Coalesced [155] print_char::ch#8 ← print_char::ch#1 -Coalesced (already) [156] print_char_cursor#119 ← print_char_cursor#63 -Coalesced [160] print_char::ch#9 ← print_char::ch#2 -Coalesced (already) [161] print_char_cursor#120 ← print_char_cursor#14 -Coalesced [165] print_str::str#5 ← print_str::str#1 -Coalesced (already) [166] print_char_cursor#108 ← print_char_cursor#14 -Coalesced [173] print_str::str#6 ← print_str::str#0 -Coalesced [174] print_char_cursor#109 ← print_char_cursor#1 -Coalesced [182] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [146] print_byte::b#5 ← print_byte::b#1 +Coalesced [153] print_char::ch#9 ← print_char::ch#2 +Coalesced (already) [154] print_char_cursor#118 ← print_char_cursor#15 +Coalesced [158] print_char::ch#10 ← print_char::ch#3 +Coalesced (already) [159] print_char_cursor#119 ← print_char_cursor#15 +Coalesced [163] print_str::str#5 ← print_str::str#1 +Coalesced (already) [164] print_char_cursor#111 ← print_char_cursor#15 +Coalesced [171] print_str::str#6 ← print_str::str#0 +Coalesced [172] print_char_cursor#112 ← print_char_cursor#1 +Coalesced [180] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 13 phi equivalence classes Culled Empty Block (label) @4 Culled Empty Block (label) @16 @@ -1748,14 +1770,14 @@ Culled Empty Block (label) compare::@44 Culled Empty Block (label) compare::@43 Culled Empty Block (label) compare::@46 Culled Empty Block (label) compare::@45 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @25 to @1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block main::@9 to main::@8 Renumbering block main::@16 to main::@9 Renumbering block main::@17 to main::@10 @@ -1800,7 +1822,8 @@ Adding NOP phi() at start of compare::@17 Adding NOP phi() at start of compare::@18 Adding NOP phi() at start of compare::@19 Adding NOP phi() at start of compare::@20 -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of print_str Adding NOP phi() at start of print_cls @@ -1821,7 +1844,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@7 [6] (byte*) print_line_cursor#31 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) [6] (byte) main::s#7 ← phi( main/(byte) 0 main::@7/(byte) main::s#10 ) - [6] (byte*) print_char_cursor#80 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#76 ) + [6] (byte*) print_char_cursor#83 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#79 ) [6] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [8] (signed word) main::w1#0 ← *((const signed word[]) swords#0 + (byte~) main::$8) @@ -1829,7 +1852,7 @@ main::@1: scope:[main] from main main::@7 main::@2: scope:[main] from main::@1 main::@6 [9] (byte*) print_line_cursor#29 ← phi( main::@1/(byte*) print_line_cursor#31 main::@6/(byte*) print_line_cursor#23 ) [9] (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#10 ) - [9] (byte*) print_char_cursor#75 ← phi( main::@1/(byte*) print_char_cursor#80 main::@6/(byte*) print_char_cursor#76 ) + [9] (byte*) print_char_cursor#78 ← phi( main::@1/(byte*) print_char_cursor#83 main::@6/(byte*) print_char_cursor#79 ) [9] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@6/(byte) main::j#1 ) [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [11] (signed word) main::w2#0 ← *((const signed word[]) swords#0 + (byte~) main::$9) @@ -1837,7 +1860,7 @@ main::@2: scope:[main] from main::@1 main::@6 main::@3: scope:[main] from main::@2 main::@4 [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#29 main::@4/(byte*) print_line_cursor#23 ) [12] (byte) main::s#3 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#10 ) - [12] (byte*) print_char_cursor#67 ← phi( main::@2/(byte*) print_char_cursor#75 main::@4/(byte*) print_char_cursor#76 ) + [12] (byte*) print_char_cursor#70 ← phi( main::@2/(byte*) print_char_cursor#78 main::@4/(byte*) print_char_cursor#79 ) [12] (byte) main::op#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::op#1 ) [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 @@ -1858,7 +1881,7 @@ main::@10: scope:[main] from main::@5 main::@4: scope:[main] from main::@10 main::@9 [22] (byte*) print_line_cursor#23 ← phi( main::@9/(byte*) print_line_cursor#19 main::@10/(byte*) print_line_cursor#1 ) [22] (byte) main::s#10 ← phi( main::@9/(byte) main::s#1 main::@10/(byte) 0 ) - [22] (byte*) print_char_cursor#76 ← phi( main::@9/(byte*) print_char_cursor#14 main::@10/(byte*~) print_char_cursor#128 ) + [22] (byte*) print_char_cursor#79 ← phi( main::@9/(byte*) print_char_cursor#15 main::@10/(byte*~) print_char_cursor#128 ) [23] (byte) main::op#1 ← ++ (byte) main::op#2 [24] if((byte) main::op#1!=(byte) 6) goto main::@3 to:main::@6 @@ -1879,7 +1902,7 @@ print_ln: scope:[print_ln] from main::@5 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [31] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 - [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1 + [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [34] return @@ -1921,7 +1944,7 @@ compare::@21: scope:[compare] from compare::@6 [47] call print_char to:compare::@7 compare::@7: scope:[compare] from compare::@21 compare::@6 - [48] (byte*) print_char_cursor#70 ← phi( compare::@6/(byte*) print_char_cursor#67 compare::@21/(byte*) print_char_cursor#14 ) + [48] (byte*) print_char_cursor#73 ← phi( compare::@6/(byte*) print_char_cursor#70 compare::@21/(byte*) print_char_cursor#15 ) [49] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [50] call print_sword to:compare::@29 @@ -1937,12 +1960,12 @@ compare::@22: scope:[compare] from compare::@30 [55] call print_char to:compare::@8 compare::@8: scope:[compare] from compare::@22 compare::@30 - [56] (byte*) print_char_cursor#71 ← phi( compare::@30/(byte*) print_char_cursor#2 compare::@22/(byte*) print_char_cursor#14 ) + [56] (byte*) print_char_cursor#74 ← phi( compare::@30/(byte*) print_char_cursor#2 compare::@22/(byte*) print_char_cursor#15 ) [57] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [58] call print_sword to:compare::@31 compare::@31: scope:[compare] from compare::@8 - [59] (byte) print_char::ch#4 ← (byte) compare::r#10 + [59] (byte) print_char::ch#5 ← (byte) compare::r#10 [60] call print_char to:compare::@return compare::@return: scope:[compare] from compare::@31 @@ -1993,89 +2016,91 @@ compare::@20: scope:[compare] from compare::@1 compare::@28: scope:[compare] from compare::@1 compare::@20 [76] (byte) compare::r#22 ← phi( compare::@1/(const byte) FF#0 compare::@20/(const byte) TT#0 ) to:compare::@6 -print_char: scope:[print_char] from compare::@21 compare::@22 compare::@31 print_byte print_byte::@1 print_sword::@2 - [77] (byte*) print_char_cursor#43 ← phi( compare::@21/(byte*) print_char_cursor#67 compare::@22/(byte*) print_char_cursor#2 compare::@31/(byte*) print_char_cursor#14 print_byte/(byte*) print_char_cursor#63 print_byte::@1/(byte*) print_char_cursor#14 print_sword::@2/(byte*) print_char_cursor#61 ) - [77] (byte) print_char::ch#6 ← phi( compare::@21/(byte) ' ' compare::@22/(byte) ' ' compare::@31/(byte) print_char::ch#4 print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [78] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6 - [79] (byte*) print_char_cursor#14 ← ++ (byte*) print_char_cursor#43 +print_char: scope:[print_char] from compare::@21 compare::@22 compare::@31 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [77] (byte*) print_char_cursor#45 ← phi( compare::@21/(byte*) print_char_cursor#70 compare::@22/(byte*) print_char_cursor#2 compare::@31/(byte*) print_char_cursor#15 print_byte/(byte*) print_char_cursor#15 print_byte::@1/(byte*) print_char_cursor#15 print_sword::@1/(byte*) print_char_cursor#62 print_sword::@3/(byte*) print_char_cursor#62 ) + [77] (byte) print_char::ch#7 ← phi( compare::@21/(byte) ' ' compare::@22/(byte) ' ' compare::@31/(byte) print_char::ch#5 print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [78] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7 + [79] (byte*) print_char_cursor#15 ← ++ (byte*) print_char_cursor#45 to:print_char::@return print_char::@return: scope:[print_char] from print_char [80] return to:@return print_sword: scope:[print_sword] from compare::@7 compare::@8 - [81] (byte*) print_char_cursor#61 ← phi( compare::@7/(byte*) print_char_cursor#70 compare::@8/(byte*) print_char_cursor#71 ) + [81] (byte*) print_char_cursor#62 ← phi( compare::@7/(byte*) print_char_cursor#73 compare::@8/(byte*) print_char_cursor#74 ) [81] (signed word) print_sword::w#3 ← phi( compare::@7/(signed word) print_sword::w#1 compare::@8/(signed word) print_sword::w#2 ) - [82] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [82] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [83] phi() [84] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [86] (byte*) print_char_cursor#60 ← phi( print_sword/(byte*) print_char_cursor#61 print_sword::@3/(byte*) print_char_cursor#14 ) - [86] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 ) - [87] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - [88] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [85] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) + [86] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + [87] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [89] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [88] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [90] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [91] call print_byte +print_sword::@1: scope:[print_sword] from print_sword + [89] phi() + [90] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [91] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 + to:print_sword::@2 +print_word: scope:[print_word] from print_sword::@2 + [92] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [93] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [92] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [93] call print_byte + [94] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [95] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [94] return + [96] return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - [95] (byte*) print_char_cursor#63 ← phi( print_word/(byte*) print_char_cursor#60 print_word::@1/(byte*) print_char_cursor#14 ) - [95] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [96] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [97] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [98] call print_char + [97] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [98] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [99] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [100] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [99] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [100] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [101] call print_char + [101] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [102] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [103] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [102] return + [104] return to:@return print_str: scope:[print_str] from compare::@29 - [103] phi() + [105] phi() to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [104] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#14 print_str::@2/(byte*) print_char_cursor#1 ) - [104] (byte*) print_str::str#2 ← phi( print_str/(byte*) print_str::str#1 print_str::@2/(byte*) print_str::str#0 ) - [105] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 + [106] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#15 print_str::@2/(byte*) print_char_cursor#1 ) + [106] (byte*) print_str::str#2 ← phi( print_str/(byte*) print_str::str#1 print_str::@2/(byte*) print_str::str#0 ) + [107] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [106] return + [108] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [107] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) - [108] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 - [109] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 + [109] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) + [110] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 + [111] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 to:print_str::@1 print_cls: scope:[print_cls] from main - [110] phi() + [112] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [111] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [112] *((byte*) print_cls::sc#2) ← (byte) ' ' - [113] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [114] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [113] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [114] *((byte*) print_cls::sc#2) ← (byte) ' ' + [115] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [116] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [115] return + [117] return to:@return @@ -2136,25 +2161,23 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#2 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#1 4.0 (byte) print_char::ch#2 4.0 -(byte) print_char::ch#4 4.0 -(byte) print_char::ch#6 8.0 +(byte) print_char::ch#3 4.0 +(byte) print_char::ch#5 4.0 +(byte) print_char::ch#7 8.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 10001.0 (byte*~) print_char_cursor#128 2002.0 -(byte*) print_char_cursor#14 344.3125 +(byte*) print_char_cursor#15 282.46153846153845 (byte*) print_char_cursor#2 4287.0 -(byte*) print_char_cursor#43 8.0 -(byte*) print_char_cursor#60 2.0 -(byte*) print_char_cursor#61 2.6666666666666665 -(byte*) print_char_cursor#63 2.0 -(byte*) print_char_cursor#67 35.677419354838705 -(byte*) print_char_cursor#70 3.0 -(byte*) print_char_cursor#71 3.0 -(byte*) print_char_cursor#75 71.0 -(byte*) print_char_cursor#76 445.0 -(byte*) print_char_cursor#80 7.333333333333333 +(byte*) print_char_cursor#45 9.0 +(byte*) print_char_cursor#62 2.0 +(byte*) print_char_cursor#70 35.677419354838705 +(byte*) print_char_cursor#73 3.0 +(byte*) print_char_cursor#74 3.0 +(byte*) print_char_cursor#78 71.0 +(byte*) print_char_cursor#79 445.0 +(byte*) print_char_cursor#83 7.333333333333333 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -2179,8 +2202,8 @@ VARIABLE REGISTER WEIGHTS (signed word) print_sword::w#0 4.0 (signed word) print_sword::w#1 4.0 (signed word) print_sword::w#2 4.0 -(signed word) print_sword::w#3 2.5 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#3 1.6666666666666665 +(signed word) print_sword::w#5 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 2.0 @@ -2194,9 +2217,9 @@ Initial phi equivalence classes [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] [ compare::ops#10 ] [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] -[ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -[ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] +[ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] +[ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_str::str#2 print_str::str#1 print_str::str#0 ] [ print_cls::sc#2 print_cls::sc#1 ] @@ -2218,9 +2241,9 @@ Complete equivalence classes [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] [ compare::ops#10 ] [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] -[ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -[ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] +[ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] +[ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_str::str#2 print_str::str#1 print_str::str#0 ] [ print_cls::sc#2 print_cls::sc#1 ] @@ -2241,9 +2264,9 @@ Allocated zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] Allocated zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] Allocated zp ZP_WORD:8 [ compare::ops#10 ] Allocated zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] -Allocated zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -Allocated zp ZP_WORD:12 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -Allocated zp ZP_WORD:14 [ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] +Allocated zp ZP_BYTE:11 [ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Allocated zp ZP_WORD:12 [ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] +Allocated zp ZP_WORD:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] Allocated zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp ZP_WORD:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#1 ] @@ -2276,7 +2299,7 @@ INITIAL ASM .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = $e + .label print_char_cursor = $c .label print_line_cursor = 6 //SEG3 @begin bbegin: @@ -2305,7 +2328,7 @@ main: { .label j = 3 .label i = 2 //SEG11 [5] call print_cls - //SEG12 [110] phi from main to print_cls [phi:main->print_cls] + //SEG12 [112] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -2318,7 +2341,7 @@ main: { //SEG15 [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta s - //SEG16 [6] phi (byte*) print_char_cursor#80 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#83 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -2331,7 +2354,7 @@ main: { b1_from_b7: //SEG19 [6] phi (byte*) print_line_cursor#31 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy //SEG20 [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - //SEG21 [6] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#76 [phi:main::@7->main::@1#2] -- register_copy + //SEG21 [6] phi (byte*) print_char_cursor#83 = (byte*) print_char_cursor#79 [phi:main::@7->main::@1#2] -- register_copy //SEG22 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy jmp b1 //SEG23 main::@1 @@ -2350,7 +2373,7 @@ main: { b2_from_b1: //SEG27 [9] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#31 [phi:main::@1->main::@2#0] -- register_copy //SEG28 [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - //SEG29 [9] phi (byte*) print_char_cursor#75 = (byte*) print_char_cursor#80 [phi:main::@1->main::@2#2] -- register_copy + //SEG29 [9] phi (byte*) print_char_cursor#78 = (byte*) print_char_cursor#83 [phi:main::@1->main::@2#2] -- register_copy //SEG30 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta j @@ -2359,7 +2382,7 @@ main: { b2_from_b6: //SEG32 [9] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy //SEG33 [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy - //SEG34 [9] phi (byte*) print_char_cursor#75 = (byte*) print_char_cursor#76 [phi:main::@6->main::@2#2] -- register_copy + //SEG34 [9] phi (byte*) print_char_cursor#78 = (byte*) print_char_cursor#79 [phi:main::@6->main::@2#2] -- register_copy //SEG35 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy jmp b2 //SEG36 main::@2 @@ -2378,7 +2401,7 @@ main: { b3_from_b2: //SEG40 [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#29 [phi:main::@2->main::@3#0] -- register_copy //SEG41 [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy - //SEG42 [12] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#75 [phi:main::@2->main::@3#2] -- register_copy + //SEG42 [12] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#78 [phi:main::@2->main::@3#2] -- register_copy //SEG43 [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuz1=vbuc1 lda #0 sta op @@ -2387,7 +2410,7 @@ main: { b3_from_b4: //SEG45 [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#23 [phi:main::@4->main::@3#0] -- register_copy //SEG46 [12] phi (byte) main::s#3 = (byte) main::s#10 [phi:main::@4->main::@3#1] -- register_copy - //SEG47 [12] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#76 [phi:main::@4->main::@3#2] -- register_copy + //SEG47 [12] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#79 [phi:main::@4->main::@3#2] -- register_copy //SEG48 [12] phi (byte) main::op#2 = (byte) main::op#1 [phi:main::@4->main::@3#3] -- register_copy jmp b3 //SEG49 main::@3 @@ -2439,13 +2462,13 @@ main: { //SEG65 [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta s - //SEG66 [22] phi (byte*) print_char_cursor#76 = (byte*~) print_char_cursor#128 [phi:main::@10->main::@4#2] -- register_copy + //SEG66 [22] phi (byte*) print_char_cursor#79 = (byte*~) print_char_cursor#128 [phi:main::@10->main::@4#2] -- register_copy jmp b4 //SEG67 [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] b4_from_b9: //SEG68 [22] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#19 [phi:main::@9->main::@4#0] -- register_copy //SEG69 [22] phi (byte) main::s#10 = (byte) main::s#1 [phi:main::@9->main::@4#1] -- register_copy - //SEG70 [22] phi (byte*) print_char_cursor#76 = (byte*) print_char_cursor#14 [phi:main::@9->main::@4#2] -- register_copy + //SEG70 [22] phi (byte*) print_char_cursor#79 = (byte*) print_char_cursor#15 [phi:main::@9->main::@4#2] -- register_copy jmp b4 //SEG71 main::@4 b4: @@ -2500,7 +2523,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG87 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG87 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -2626,15 +2649,15 @@ compare: { //SEG121 [47] call print_char //SEG122 [77] phi from compare::@21 to print_char [phi:compare::@21->print_char] print_char_from_b21: - //SEG123 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#67 [phi:compare::@21->print_char#0] -- register_copy - //SEG124 [77] phi (byte) print_char::ch#6 = (byte) ' ' [phi:compare::@21->print_char#1] -- vbuz1=vbuc1 + //SEG123 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#70 [phi:compare::@21->print_char#0] -- register_copy + //SEG124 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:compare::@21->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char //SEG125 [48] phi from compare::@21 compare::@6 to compare::@7 [phi:compare::@21/compare::@6->compare::@7] b7_from_b21: b7_from_b6: - //SEG126 [48] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#14 [phi:compare::@21/compare::@6->compare::@7#0] -- register_copy + //SEG126 [48] phi (byte*) print_char_cursor#73 = (byte*) print_char_cursor#15 [phi:compare::@21/compare::@6->compare::@7#0] -- register_copy jmp b7 //SEG127 compare::@7 b7: @@ -2646,7 +2669,7 @@ compare: { //SEG129 [50] call print_sword //SEG130 [81] phi from compare::@7 to print_sword [phi:compare::@7->print_sword] print_sword_from_b7: - //SEG131 [81] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#70 [phi:compare::@7->print_sword#0] -- register_copy + //SEG131 [81] phi (byte*) print_char_cursor#62 = (byte*) print_char_cursor#73 [phi:compare::@7->print_sword#0] -- register_copy //SEG132 [81] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:compare::@7->print_sword#1] -- register_copy jsr print_sword jmp b29 @@ -2658,7 +2681,7 @@ compare: { lda ops+1 sta print_str.str+1 //SEG135 [52] call print_str - //SEG136 [103] phi from compare::@29 to print_str [phi:compare::@29->print_str] + //SEG136 [105] phi from compare::@29 to print_str [phi:compare::@29->print_str] print_str_from_b29: jsr print_str jmp b30 @@ -2675,15 +2698,15 @@ compare: { //SEG141 [55] call print_char //SEG142 [77] phi from compare::@22 to print_char [phi:compare::@22->print_char] print_char_from_b22: - //SEG143 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#2 [phi:compare::@22->print_char#0] -- register_copy - //SEG144 [77] phi (byte) print_char::ch#6 = (byte) ' ' [phi:compare::@22->print_char#1] -- vbuz1=vbuc1 + //SEG143 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:compare::@22->print_char#0] -- register_copy + //SEG144 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:compare::@22->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char //SEG145 [56] phi from compare::@22 compare::@30 to compare::@8 [phi:compare::@22/compare::@30->compare::@8] b8_from_b22: b8_from_b30: - //SEG146 [56] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#14 [phi:compare::@22/compare::@30->compare::@8#0] -- register_copy + //SEG146 [56] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#15 [phi:compare::@22/compare::@30->compare::@8#0] -- register_copy jmp b8 //SEG147 compare::@8 b8: @@ -2695,20 +2718,20 @@ compare: { //SEG149 [58] call print_sword //SEG150 [81] phi from compare::@8 to print_sword [phi:compare::@8->print_sword] print_sword_from_b8: - //SEG151 [81] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#71 [phi:compare::@8->print_sword#0] -- register_copy + //SEG151 [81] phi (byte*) print_char_cursor#62 = (byte*) print_char_cursor#74 [phi:compare::@8->print_sword#0] -- register_copy //SEG152 [81] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:compare::@8->print_sword#1] -- register_copy jsr print_sword jmp b31 //SEG153 compare::@31 b31: - //SEG154 [59] (byte) print_char::ch#4 ← (byte) compare::r#10 -- vbuz1=vbuz2 + //SEG154 [59] (byte) print_char::ch#5 ← (byte) compare::r#10 -- vbuz1=vbuz2 lda r sta print_char.ch //SEG155 [60] call print_char //SEG156 [77] phi from compare::@31 to print_char [phi:compare::@31->print_char] print_char_from_b31: - //SEG157 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#14 [phi:compare::@31->print_char#0] -- register_copy - //SEG158 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:compare::@31->print_char#1] -- register_copy + //SEG157 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:compare::@31->print_char#0] -- register_copy + //SEG158 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#5 [phi:compare::@31->print_char#1] -- register_copy jsr print_char jmp breturn //SEG159 compare::@return @@ -2924,11 +2947,11 @@ compare: { // print_char(byte zeropage($b) ch) print_char: { .label ch = $b - //SEG222 [78] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuz2 + //SEG222 [78] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG223 [79] (byte*) print_char_cursor#14 ← ++ (byte*) print_char_cursor#43 -- pbuz1=_inc_pbuz1 + //SEG223 [79] (byte*) print_char_cursor#15 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -2941,29 +2964,61 @@ print_char: { } //SEG226 print_sword // Print a signed word as HEX -// print_sword(signed word zeropage($c) w) +// print_sword(signed word zeropage($e) w) print_sword: { - .label w = $c - //SEG227 [82] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + .label w = $e + //SEG227 [82] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG228 [83] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG229 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG228 [83] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG229 print_sword::@3 + b3: //SEG230 [84] call print_char - //SEG231 [77] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG232 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#61 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG233 [77] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG231 [77] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG232 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#62 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG233 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG234 [85] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG235 [85] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG236 print_sword::@2 + b2: + //SEG237 [86] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG238 [87] call print_word + jsr print_word + jmp breturn + //SEG239 print_sword::@return + breturn: + //SEG240 [88] return + rts + //SEG241 [89] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG242 print_sword::@1 + b1: + //SEG243 [90] call print_char + //SEG244 [77] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG245 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#62 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG246 [77] phi (byte) print_char::ch#7 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG234 print_sword::@3 - b3: - //SEG235 [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG247 print_sword::@4 + b4: + //SEG248 [91] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -2971,176 +3026,155 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG236 [86] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG237 [86] phi (byte*) print_char_cursor#60 = (byte*) print_char_cursor#61 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG238 [86] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG239 print_sword::@1 - b1: - //SEG240 [87] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG241 [88] call print_word - jsr print_word - jmp breturn - //SEG242 print_sword::@return - breturn: - //SEG243 [89] return - rts + jmp b2_from_b4 } -//SEG244 print_word +//SEG249 print_word // Print a word as HEX // print_word(word zeropage($20) w) print_word: { .label w = $20 - //SEG245 [90] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG250 [92] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG246 [91] call print_byte - //SEG247 [95] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG251 [93] call print_byte + //SEG252 [97] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG248 [95] phi (byte*) print_char_cursor#63 = (byte*) print_char_cursor#60 [phi:print_word->print_byte#0] -- register_copy - //SEG249 [95] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG253 [97] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte jmp b1 - //SEG250 print_word::@1 + //SEG254 print_word::@1 b1: - //SEG251 [92] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG255 [94] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG252 [93] call print_byte - //SEG253 [95] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG256 [95] call print_byte + //SEG257 [97] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG254 [95] phi (byte*) print_char_cursor#63 = (byte*) print_char_cursor#14 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG255 [95] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG258 [97] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte jmp breturn - //SEG256 print_word::@return + //SEG259 print_word::@return breturn: - //SEG257 [94] return + //SEG260 [96] return rts } -//SEG258 print_byte +//SEG261 print_byte // Print a byte as HEX // print_byte(byte zeropage($10) b) print_byte: { .label _0 = $22 .label _2 = $23 .label b = $10 - //SEG259 [96] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + //SEG262 [98] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG260 [97] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG263 [99] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG261 [98] call print_char - //SEG262 [77] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG264 [100] call print_char + //SEG265 [77] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG263 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#63 [phi:print_byte->print_char#0] -- register_copy - //SEG264 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG266 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:print_byte->print_char#0] -- register_copy + //SEG267 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG265 print_byte::@1 + //SEG268 print_byte::@1 b1: - //SEG266 [99] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG269 [101] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG267 [100] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG270 [102] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG268 [101] call print_char - //SEG269 [77] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG271 [103] call print_char + //SEG272 [77] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG270 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#14 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG271 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG273 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG274 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG272 print_byte::@return + //SEG275 print_byte::@return breturn: - //SEG273 [102] return + //SEG276 [104] return rts } -//SEG274 print_str +//SEG277 print_str // Print a zero-terminated string // print_str(byte* zeropage($11) str) print_str: { .label str = $11 - //SEG275 [104] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG278 [106] 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: - //SEG276 [104] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#14 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG277 [104] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG279 [106] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#15 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG280 [106] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG278 print_str::@1 + //SEG281 print_str::@1 b1: - //SEG279 [105] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG282 [107] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG280 print_str::@return + //SEG283 print_str::@return breturn: - //SEG281 [106] return + //SEG284 [108] return rts - //SEG282 print_str::@2 + //SEG285 print_str::@2 b2: - //SEG283 [107] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG286 [109] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG284 [108] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG287 [110] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG285 [109] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG288 [111] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG286 print_cls +//SEG289 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $13 - //SEG287 [111] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG290 [113] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG288 [111] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG291 [113] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG289 [111] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG292 [113] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG290 [111] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG293 [113] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG291 print_cls::@1 + //SEG294 print_cls::@1 b1: - //SEG292 [112] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG295 [114] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG293 [113] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG296 [115] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG294 [114] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG297 [116] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -3148,92 +3182,92 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG295 print_cls::@return + //SEG298 print_cls::@return breturn: - //SEG296 [115] return + //SEG299 [117] return rts } -//SEG297 File Data +//SEG300 File Data print_hextab: .text "0123456789abcdef" swords: .word -$6fed, $12, $7fed REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#80 main::s#7 print_line_cursor#31 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#80 main::s#7 print_line_cursor#31 main::$8 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#83 main::s#7 print_line_cursor#31 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#83 main::s#7 print_line_cursor#31 main::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Statement [8] (signed word) main::w1#0 ← *((const signed word[]) swords#0 + (byte~) main::$8) [ main::i#2 print_char_cursor#80 main::s#7 print_line_cursor#31 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#80 main::s#7 print_line_cursor#31 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#75 main::s#5 print_line_cursor#29 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#75 main::s#5 print_line_cursor#29 main::$9 ] ) always clobbers reg byte a +Statement [8] (signed word) main::w1#0 ← *((const signed word[]) swords#0 + (byte~) main::$8) [ main::i#2 print_char_cursor#83 main::s#7 print_line_cursor#31 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#83 main::s#7 print_line_cursor#31 main::w1#0 ] ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#78 main::s#5 print_line_cursor#29 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#78 main::s#5 print_line_cursor#29 main::$9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ] -Statement [11] (signed word) main::w2#0 ← *((const signed word[]) swords#0 + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#75 main::s#5 print_line_cursor#29 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#75 main::s#5 print_line_cursor#29 main::w2#0 ] ) always clobbers reg byte a -Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#67 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#67 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a +Statement [11] (signed word) main::w2#0 ← *((const signed word[]) swords#0 + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#78 main::s#5 print_line_cursor#29 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#78 main::s#5 print_line_cursor#29 main::w2#0 ] ) always clobbers reg byte a +Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#70 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#70 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::op#2 main::op#1 ] -Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#67 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#67 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#70 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#70 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a Statement [21] (byte*~) print_char_cursor#128 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#128 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#128 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#14 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#14 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#14 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#14 ] ) always clobbers reg byte a -Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@23 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [45] if((signed word) compare::w1#0<(signed byte) 0) goto compare::@7 [ print_char_cursor#67 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 ] ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a +Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@23 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [45] if((signed word) compare::w1#0<(signed byte) 0) goto compare::@7 [ print_char_cursor#70 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] -Statement [49] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [ compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#70 print_sword::w#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#70 print_sword::w#1 ] ) always clobbers reg byte a -Statement [51] (byte*) print_str::str#1 ← (byte*) compare::ops#10 [ compare::w2#0 print_char_cursor#14 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#14 compare::r#10 print_str::str#1 ] ) always clobbers reg byte a +Statement [49] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [ compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#73 print_sword::w#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#73 print_sword::w#1 ] ) always clobbers reg byte a +Statement [51] (byte*) print_str::str#1 ← (byte*) compare::ops#10 [ compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ) always clobbers reg byte a Statement [53] if((signed word) compare::w2#0<(signed byte) 0) goto compare::@8 [ compare::w2#0 compare::r#10 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [57] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [ compare::r#10 print_char_cursor#71 print_sword::w#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#71 print_sword::w#2 ] ) always clobbers reg byte a -Statement [62] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@24 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [65] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@25 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [68] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@26 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [71] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@27 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [74] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@28 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [78] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6 [ print_char_cursor#43 ] ( main:2::compare:16::print_char:47 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#43 ] main:2::compare:16::print_char:55 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#43 ] main:2::compare:16::print_char:60 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:91::print_char:98 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:91::print_char:98 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:93::print_char:98 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:93::print_char:98 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:91::print_char:101 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:91::print_char:101 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:93::print_char:101 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:93::print_char:101 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#43 ] ) always clobbers reg byte y +Statement [57] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [ compare::r#10 print_char_cursor#74 print_sword::w#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#74 print_sword::w#2 ] ) always clobbers reg byte a +Statement [62] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@24 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [65] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@25 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [68] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@26 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [71] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@27 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [74] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@28 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [78] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7 [ print_char_cursor#45 ] ( main:2::compare:16::print_char:47 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#45 ] main:2::compare:16::print_char:55 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#45 ] main:2::compare:16::print_char:60 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_sword::w#3 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_char:90 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_sword::w#3 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_char:90 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:93::print_char:100 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:93::print_char:100 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:95::print_char:100 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_byte::b#2 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:95::print_char:100 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:93::print_char:103 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:93::print_char:103 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:95::print_char:103 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:95::print_char:103 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#45 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ main::op#2 main::op#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [82] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#61 print_sword::w#3 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#61 print_sword::w#3 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#61 print_sword::w#3 ] ) always clobbers reg byte a -Statement [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#14 print_sword::w#0 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#14 print_sword::w#0 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#14 print_sword::w#0 ] ) always clobbers reg byte a -Statement [87] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#60 print_word::w#0 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#60 print_word::w#0 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#60 print_word::w#0 ] ) always clobbers reg byte a -Statement [90] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#60 print_word::w#0 print_byte::b#0 ] ( main:2::compare:16::print_sword:50::print_word:88 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#60 print_word::w#0 print_byte::b#0 ] main:2::compare:16::print_sword:58::print_word:88 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#60 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [92] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#14 print_byte::b#1 ] ( main:2::compare:16::print_sword:50::print_word:88 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#14 print_byte::b#1 ] main:2::compare:16::print_sword:58::print_word:88 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#14 print_byte::b#1 ] ) always clobbers reg byte a -Statement [96] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#63 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_sword:50::print_word:88::print_byte:91 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#63 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:91 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#63 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#63 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#63 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [82] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#62 print_sword::w#3 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#62 print_sword::w#3 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#62 print_sword::w#3 ] ) always clobbers reg byte a +Statement [86] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#15 print_word::w#0 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_word::w#0 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 ] ) always clobbers reg byte a +Statement [91] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#15 print_sword::w#0 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_sword::w#0 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_sword::w#0 ] ) always clobbers reg byte a +Statement [92] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#15 print_word::w#0 print_byte::b#0 ] ( main:2::compare:16::print_sword:50::print_word:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_word::w#0 print_byte::b#0 ] main:2::compare:16::print_sword:58::print_word:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [94] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#15 print_byte::b#1 ] ( main:2::compare:16::print_sword:50::print_word:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_byte::b#1 ] main:2::compare:16::print_sword:58::print_word:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#1 ] ) always clobbers reg byte a +Statement [98] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_sword:50::print_word:87::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [99] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#14 print_byte::$2 ] ( main:2::compare:16::print_sword:50::print_word:88::print_byte:91 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#14 print_byte::$2 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:91 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#14 print_byte::$2 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#14 print_byte::$2 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#14 print_byte::$2 ] ) always clobbers reg byte a -Statement [105] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [107] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [112] *((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 [114] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#80 main::s#7 print_line_cursor#31 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#80 main::s#7 print_line_cursor#31 main::$8 ] ) always clobbers reg byte a -Statement [8] (signed word) main::w1#0 ← *((const signed word[]) swords#0 + (byte~) main::$8) [ main::i#2 print_char_cursor#80 main::s#7 print_line_cursor#31 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#80 main::s#7 print_line_cursor#31 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#75 main::s#5 print_line_cursor#29 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#75 main::s#5 print_line_cursor#29 main::$9 ] ) always clobbers reg byte a -Statement [11] (signed word) main::w2#0 ← *((const signed word[]) swords#0 + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#75 main::s#5 print_line_cursor#29 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#75 main::s#5 print_line_cursor#29 main::w2#0 ] ) always clobbers reg byte a -Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#67 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#67 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a -Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#67 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#67 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [101] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#15 print_byte::$2 ] ( main:2::compare:16::print_sword:50::print_word:87::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::$2 ] ) always clobbers reg byte a +Statement [107] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y +Statement [109] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y +Statement [114] *((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 [116] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#83 main::s#7 print_line_cursor#31 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#83 main::s#7 print_line_cursor#31 main::$8 ] ) always clobbers reg byte a +Statement [8] (signed word) main::w1#0 ← *((const signed word[]) swords#0 + (byte~) main::$8) [ main::i#2 print_char_cursor#83 main::s#7 print_line_cursor#31 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#83 main::s#7 print_line_cursor#31 main::w1#0 ] ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#78 main::s#5 print_line_cursor#29 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#78 main::s#5 print_line_cursor#29 main::$9 ] ) always clobbers reg byte a +Statement [11] (signed word) main::w2#0 ← *((const signed word[]) swords#0 + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#78 main::s#5 print_line_cursor#29 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#78 main::s#5 print_line_cursor#29 main::w2#0 ] ) always clobbers reg byte a +Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#70 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#70 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a +Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#70 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#70 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a Statement [21] (byte*~) print_char_cursor#128 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#128 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#128 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#14 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#14 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#14 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#14 ] ) always clobbers reg byte a -Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@23 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [45] if((signed word) compare::w1#0<(signed byte) 0) goto compare::@7 [ print_char_cursor#67 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 ] ) always clobbers reg byte a -Statement [49] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [ compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#70 print_sword::w#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#70 print_sword::w#1 ] ) always clobbers reg byte a -Statement [51] (byte*) print_str::str#1 ← (byte*) compare::ops#10 [ compare::w2#0 print_char_cursor#14 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#14 compare::r#10 print_str::str#1 ] ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a +Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@23 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [45] if((signed word) compare::w1#0<(signed byte) 0) goto compare::@7 [ print_char_cursor#70 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 ] ) always clobbers reg byte a +Statement [49] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 [ compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#73 print_sword::w#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#73 print_sword::w#1 ] ) always clobbers reg byte a +Statement [51] (byte*) print_str::str#1 ← (byte*) compare::ops#10 [ compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 print_char_cursor#15 compare::r#10 print_str::str#1 ] ) always clobbers reg byte a Statement [53] if((signed word) compare::w2#0<(signed byte) 0) goto compare::@8 [ compare::w2#0 compare::r#10 print_char_cursor#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [57] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [ compare::r#10 print_char_cursor#71 print_sword::w#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#71 print_sword::w#2 ] ) always clobbers reg byte a -Statement [62] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@24 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [65] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@25 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [68] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@26 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [71] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@27 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [74] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@28 [ print_char_cursor#67 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#67 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [78] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6 [ print_char_cursor#43 ] ( main:2::compare:16::print_char:47 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#43 ] main:2::compare:16::print_char:55 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#43 ] main:2::compare:16::print_char:60 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:91::print_char:98 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:91::print_char:98 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:93::print_char:98 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:93::print_char:98 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:91::print_char:101 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:91::print_char:101 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#43 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:93::print_char:101 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#43 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:93::print_char:101 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#43 ] ) always clobbers reg byte y -Statement [82] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#61 print_sword::w#3 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#61 print_sword::w#3 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#61 print_sword::w#3 ] ) always clobbers reg byte a -Statement [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#14 print_sword::w#0 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#14 print_sword::w#0 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#14 print_sword::w#0 ] ) always clobbers reg byte a -Statement [87] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#60 print_word::w#0 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#60 print_word::w#0 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#60 print_word::w#0 ] ) always clobbers reg byte a -Statement [90] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#60 print_word::w#0 print_byte::b#0 ] ( main:2::compare:16::print_sword:50::print_word:88 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#60 print_word::w#0 print_byte::b#0 ] main:2::compare:16::print_sword:58::print_word:88 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#60 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [92] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#14 print_byte::b#1 ] ( main:2::compare:16::print_sword:50::print_word:88 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#14 print_byte::b#1 ] main:2::compare:16::print_sword:58::print_word:88 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#14 print_byte::b#1 ] ) always clobbers reg byte a -Statement [96] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#63 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_sword:50::print_word:88::print_byte:91 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#63 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:91 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#63 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#63 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#63 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a -Statement [99] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#14 print_byte::$2 ] ( main:2::compare:16::print_sword:50::print_word:88::print_byte:91 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#14 print_byte::$2 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:91 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#14 print_byte::$2 ] main:2::compare:16::print_sword:50::print_word:88::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#14 print_byte::$2 ] main:2::compare:16::print_sword:58::print_word:88::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#14 print_byte::$2 ] ) always clobbers reg byte a -Statement [105] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [107] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [112] *((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 [114] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [57] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 [ compare::r#10 print_char_cursor#74 print_sword::w#2 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#74 print_sword::w#2 ] ) always clobbers reg byte a +Statement [62] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@24 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [65] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@25 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [68] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@26 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [71] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@27 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [74] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@28 [ print_char_cursor#70 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#70 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a +Statement [78] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7 [ print_char_cursor#45 ] ( main:2::compare:16::print_char:47 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#45 ] main:2::compare:16::print_char:55 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#45 ] main:2::compare:16::print_char:60 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_sword::w#3 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_char:84 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_char:90 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_sword::w#3 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_char:90 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_sword::w#3 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:93::print_char:100 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:93::print_char:100 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_byte::b#2 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:95::print_char:100 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_byte::b#2 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:95::print_char:100 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_byte::b#2 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:93::print_char:103 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:93::print_char:103 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#45 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:95::print_char:103 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#45 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:95::print_char:103 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#45 ] ) always clobbers reg byte y +Statement [82] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#62 print_sword::w#3 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#62 print_sword::w#3 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#62 print_sword::w#3 ] ) always clobbers reg byte a +Statement [86] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#15 print_word::w#0 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_word::w#0 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 ] ) always clobbers reg byte a +Statement [91] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#15 print_sword::w#0 ] ( main:2::compare:16::print_sword:50 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_sword::w#0 ] main:2::compare:16::print_sword:58 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_sword::w#0 ] ) always clobbers reg byte a +Statement [92] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#15 print_word::w#0 print_byte::b#0 ] ( main:2::compare:16::print_sword:50::print_word:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_word::w#0 print_byte::b#0 ] main:2::compare:16::print_sword:58::print_word:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [94] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#15 print_byte::b#1 ] ( main:2::compare:16::print_sword:50::print_word:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_byte::b#1 ] main:2::compare:16::print_sword:58::print_word:87 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#1 ] ) always clobbers reg byte a +Statement [98] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ( main:2::compare:16::print_sword:50::print_word:87::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [101] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#15 print_byte::$2 ] ( main:2::compare:16::print_sword:50::print_word:87::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:93 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_word::w#0 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:50::print_word:87::print_byte:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::ops#10 compare::r#10 print_char_cursor#15 print_byte::$2 ] main:2::compare:16::print_sword:58::print_word:87::print_byte:95 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::r#10 print_char_cursor#15 print_byte::$2 ] ) always clobbers reg byte a +Statement [107] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y +Statement [109] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:52 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y +Statement [114] *((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 [116] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_BYTE:4 [ main::op#2 main::op#1 ] : zp ZP_BYTE:4 , reg byte x , @@ -3241,9 +3275,9 @@ Potential registers zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main Potential registers zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] : zp ZP_WORD:6 , Potential registers zp ZP_WORD:8 [ compare::ops#10 ] : zp ZP_WORD:8 , Potential registers zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] : zp ZP_BYTE:10 , reg byte x , -Potential registers zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:12 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] : zp ZP_WORD:12 , -Potential registers zp ZP_WORD:14 [ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] : zp ZP_WORD:14 , +Potential registers zp ZP_BYTE:11 [ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:12 [ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] : zp ZP_WORD:12 , +Potential registers zp ZP_WORD:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] : zp ZP_WORD:14 , Potential registers zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:16 , reg byte x , Potential registers zp ZP_WORD:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] : zp ZP_WORD:17 , Potential registers zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:19 , @@ -3259,48 +3293,48 @@ Potential registers zp ZP_BYTE:34 [ print_byte::$0 ] : zp ZP_BYTE:34 , reg byte Potential registers zp ZP_BYTE:35 [ print_byte::$2 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 27,162.22: zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] 17,213.99: zp ZP_WORD:14 [ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] +Uplift Scope [] 27,162.22: zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] 17,148.47: zp ZP_WORD:12 [ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] Uplift Scope [print_str] 30,005.5: zp ZP_WORD:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] Uplift Scope [main] 2,302.43: zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] 1,774.5: zp ZP_BYTE:4 [ main::op#2 main::op#1 ] 202: zp ZP_BYTE:24 [ main::$9 ] 170.44: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 78.71: zp ZP_WORD:25 [ main::w2#0 ] 53.26: zp ZP_WORD:22 [ main::w1#0 ] 22: zp ZP_BYTE:21 [ main::$8 ] 18.07: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [compare] 168.83: zp ZP_BYTE:31 [ compare::op#0 ] 31.78: zp ZP_WORD:27 [ compare::w1#0 ] 26.08: zp ZP_WORD:29 [ compare::w2#0 ] 12.93: zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] 0.29: zp ZP_WORD:8 [ compare::ops#10 ] Uplift Scope [print_cls] 33: zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [print_char] 20: zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -Uplift Scope [print_sword] 18.5: zp ZP_WORD:12 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Uplift Scope [print_char] 20: zp ZP_BYTE:11 [ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ] Uplift Scope [print_byte] 10: zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:34 [ print_byte::$0 ] 4: zp ZP_BYTE:35 [ print_byte::$2 ] +Uplift Scope [print_sword] 17.67: zp ZP_WORD:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] Uplift Scope [print_word] 2: zp ZP_WORD:32 [ print_word::w#0 ] Uplift Scope [print_ln] -Uplifting [] best 1156381 combination zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:14 [ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] -Uplifting [print_str] best 1156381 combination zp ZP_WORD:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] -Uplifting [main] best 1143941 combination zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] reg byte x [ main::op#2 main::op#1 ] reg byte a [ main::$9 ] zp ZP_BYTE:3 [ main::j#2 main::j#1 ] zp ZP_WORD:25 [ main::w2#0 ] zp ZP_WORD:22 [ main::w1#0 ] reg byte a [ main::$8 ] zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Uplifting [] best 1156398 combination zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:12 [ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] +Uplifting [print_str] best 1156398 combination zp ZP_WORD:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] +Uplifting [main] best 1143958 combination zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] reg byte x [ main::op#2 main::op#1 ] reg byte a [ main::$9 ] zp ZP_BYTE:3 [ main::j#2 main::j#1 ] zp ZP_WORD:25 [ main::w2#0 ] zp ZP_WORD:22 [ main::w1#0 ] reg byte a [ main::$8 ] zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Limited combination testing to 100 combinations of 256 possible. -Uplifting [compare] best 1140923 combination reg byte x [ compare::op#0 ] zp ZP_WORD:27 [ compare::w1#0 ] zp ZP_WORD:29 [ compare::w2#0 ] zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] zp ZP_WORD:8 [ compare::ops#10 ] -Uplifting [print_cls] best 1140923 combination zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_char] best 1140902 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -Uplifting [print_sword] best 1140902 combination zp ZP_WORD:12 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -Uplifting [print_byte] best 1140894 combination zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 1140894 combination zp ZP_WORD:32 [ print_word::w#0 ] -Uplifting [print_ln] best 1140894 combination +Uplifting [compare] best 1140940 combination reg byte x [ compare::op#0 ] zp ZP_WORD:27 [ compare::w1#0 ] zp ZP_WORD:29 [ compare::w2#0 ] zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] zp ZP_WORD:8 [ compare::ops#10 ] +Uplifting [print_cls] best 1140940 combination zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_char] best 1140916 combination reg byte a [ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_byte] best 1140908 combination zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_sword] best 1140908 combination zp ZP_WORD:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplifting [print_word] best 1140908 combination zp ZP_WORD:32 [ print_word::w#0 ] +Uplifting [print_ln] best 1140908 combination Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Uplifting [main] best 1140894 combination zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] +Uplifting [main] best 1140908 combination zp ZP_BYTE:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::j#2 main::j#1 ] -Uplifting [main] best 1140894 combination zp ZP_BYTE:3 [ main::j#2 main::j#1 ] +Uplifting [main] best 1140908 combination zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 1140894 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 1140908 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] -Uplifting [compare] best 1140894 combination zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] +Uplifting [compare] best 1140908 combination zp ZP_BYTE:10 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 1140894 combination zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_byte] best 1140908 combination zp ZP_BYTE:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Coalescing zero page register with common assignment [ zp ZP_WORD:8 [ compare::ops#10 ] ] with [ zp ZP_WORD:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:27 [ compare::w1#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 compare::w1#0 ] ] with [ zp ZP_WORD:32 [ print_word::w#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp ZP_WORD:27 [ compare::w1#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 ] ] with [ zp ZP_WORD:32 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ main::w2#0 ] ] with [ zp ZP_WORD:29 [ compare::w2#0 ] ] - score: 1 Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] Allocated (was zp ZP_WORD:8) zp ZP_WORD:7 [ compare::ops#10 print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:9 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] -Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 compare::w1#0 print_word::w#0 ] -Allocated (was zp ZP_WORD:14) zp ZP_WORD:12 [ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] +Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] +Allocated (was zp ZP_WORD:14) zp ZP_WORD:12 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated (was zp ZP_WORD:19) zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] Allocated (was zp ZP_WORD:22) zp ZP_WORD:17 [ main::w1#0 ] @@ -3324,7 +3358,7 @@ ASSEMBLER BEFORE OPTIMIZATION .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = $c + .label print_char_cursor = $a .label print_line_cursor = 5 //SEG3 @begin bbegin: @@ -3350,7 +3384,7 @@ main: { .label j = 3 .label i = 2 //SEG11 [5] call print_cls - //SEG12 [110] phi from main to print_cls [phi:main->print_cls] + //SEG12 [112] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -3363,7 +3397,7 @@ main: { //SEG15 [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta s - //SEG16 [6] phi (byte*) print_char_cursor#80 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#83 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -3376,7 +3410,7 @@ main: { b1_from_b7: //SEG19 [6] phi (byte*) print_line_cursor#31 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy //SEG20 [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - //SEG21 [6] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#76 [phi:main::@7->main::@1#2] -- register_copy + //SEG21 [6] phi (byte*) print_char_cursor#83 = (byte*) print_char_cursor#79 [phi:main::@7->main::@1#2] -- register_copy //SEG22 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy jmp b1 //SEG23 main::@1 @@ -3394,7 +3428,7 @@ main: { b2_from_b1: //SEG27 [9] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#31 [phi:main::@1->main::@2#0] -- register_copy //SEG28 [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - //SEG29 [9] phi (byte*) print_char_cursor#75 = (byte*) print_char_cursor#80 [phi:main::@1->main::@2#2] -- register_copy + //SEG29 [9] phi (byte*) print_char_cursor#78 = (byte*) print_char_cursor#83 [phi:main::@1->main::@2#2] -- register_copy //SEG30 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta j @@ -3403,7 +3437,7 @@ main: { b2_from_b6: //SEG32 [9] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy //SEG33 [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy - //SEG34 [9] phi (byte*) print_char_cursor#75 = (byte*) print_char_cursor#76 [phi:main::@6->main::@2#2] -- register_copy + //SEG34 [9] phi (byte*) print_char_cursor#78 = (byte*) print_char_cursor#79 [phi:main::@6->main::@2#2] -- register_copy //SEG35 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy jmp b2 //SEG36 main::@2 @@ -3421,7 +3455,7 @@ main: { b3_from_b2: //SEG40 [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#29 [phi:main::@2->main::@3#0] -- register_copy //SEG41 [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy - //SEG42 [12] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#75 [phi:main::@2->main::@3#2] -- register_copy + //SEG42 [12] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#78 [phi:main::@2->main::@3#2] -- register_copy //SEG43 [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 ldx #0 jmp b3 @@ -3429,7 +3463,7 @@ main: { b3_from_b4: //SEG45 [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#23 [phi:main::@4->main::@3#0] -- register_copy //SEG46 [12] phi (byte) main::s#3 = (byte) main::s#10 [phi:main::@4->main::@3#1] -- register_copy - //SEG47 [12] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#76 [phi:main::@4->main::@3#2] -- register_copy + //SEG47 [12] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#79 [phi:main::@4->main::@3#2] -- register_copy //SEG48 [12] phi (byte) main::op#2 = (byte) main::op#1 [phi:main::@4->main::@3#3] -- register_copy jmp b3 //SEG49 main::@3 @@ -3475,13 +3509,13 @@ main: { //SEG65 [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta s - //SEG66 [22] phi (byte*) print_char_cursor#76 = (byte*~) print_char_cursor#128 [phi:main::@10->main::@4#2] -- register_copy + //SEG66 [22] phi (byte*) print_char_cursor#79 = (byte*~) print_char_cursor#128 [phi:main::@10->main::@4#2] -- register_copy jmp b4 //SEG67 [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] b4_from_b9: //SEG68 [22] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#19 [phi:main::@9->main::@4#0] -- register_copy //SEG69 [22] phi (byte) main::s#10 = (byte) main::s#1 [phi:main::@9->main::@4#1] -- register_copy - //SEG70 [22] phi (byte*) print_char_cursor#76 = (byte*) print_char_cursor#14 [phi:main::@9->main::@4#2] -- register_copy + //SEG70 [22] phi (byte*) print_char_cursor#79 = (byte*) print_char_cursor#15 [phi:main::@9->main::@4#2] -- register_copy jmp b4 //SEG71 main::@4 b4: @@ -3535,7 +3569,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG87 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG87 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -3552,9 +3586,9 @@ print_ln: { } //SEG90 compare // Compare two words using an operator -// compare(signed word zeropage($a) w1, signed word zeropage($13) w2, byte register(X) op) +// compare(signed word zeropage($c) w1, signed word zeropage($13) w2, byte register(X) op) compare: { - .label w1 = $a + .label w1 = $c .label w2 = $13 .label ops = 7 .label r = 9 @@ -3654,14 +3688,14 @@ compare: { //SEG121 [47] call print_char //SEG122 [77] phi from compare::@21 to print_char [phi:compare::@21->print_char] print_char_from_b21: - //SEG123 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#67 [phi:compare::@21->print_char#0] -- register_copy - //SEG124 [77] phi (byte) print_char::ch#6 = (byte) ' ' [phi:compare::@21->print_char#1] -- vbuaa=vbuc1 + //SEG123 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#70 [phi:compare::@21->print_char#0] -- register_copy + //SEG124 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:compare::@21->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG125 [48] phi from compare::@21 compare::@6 to compare::@7 [phi:compare::@21/compare::@6->compare::@7] b7_from_b21: b7_from_b6: - //SEG126 [48] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#14 [phi:compare::@21/compare::@6->compare::@7#0] -- register_copy + //SEG126 [48] phi (byte*) print_char_cursor#73 = (byte*) print_char_cursor#15 [phi:compare::@21/compare::@6->compare::@7#0] -- register_copy jmp b7 //SEG127 compare::@7 b7: @@ -3669,7 +3703,7 @@ compare: { //SEG129 [50] call print_sword //SEG130 [81] phi from compare::@7 to print_sword [phi:compare::@7->print_sword] print_sword_from_b7: - //SEG131 [81] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#70 [phi:compare::@7->print_sword#0] -- register_copy + //SEG131 [81] phi (byte*) print_char_cursor#62 = (byte*) print_char_cursor#73 [phi:compare::@7->print_sword#0] -- register_copy //SEG132 [81] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:compare::@7->print_sword#1] -- register_copy jsr print_sword jmp b29 @@ -3677,7 +3711,7 @@ compare: { b29: //SEG134 [51] (byte*) print_str::str#1 ← (byte*) compare::ops#10 //SEG135 [52] call print_str - //SEG136 [103] phi from compare::@29 to print_str [phi:compare::@29->print_str] + //SEG136 [105] phi from compare::@29 to print_str [phi:compare::@29->print_str] print_str_from_b29: jsr print_str jmp b30 @@ -3694,14 +3728,14 @@ compare: { //SEG141 [55] call print_char //SEG142 [77] phi from compare::@22 to print_char [phi:compare::@22->print_char] print_char_from_b22: - //SEG143 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#2 [phi:compare::@22->print_char#0] -- register_copy - //SEG144 [77] phi (byte) print_char::ch#6 = (byte) ' ' [phi:compare::@22->print_char#1] -- vbuaa=vbuc1 + //SEG143 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:compare::@22->print_char#0] -- register_copy + //SEG144 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:compare::@22->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG145 [56] phi from compare::@22 compare::@30 to compare::@8 [phi:compare::@22/compare::@30->compare::@8] b8_from_b22: b8_from_b30: - //SEG146 [56] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#14 [phi:compare::@22/compare::@30->compare::@8#0] -- register_copy + //SEG146 [56] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#15 [phi:compare::@22/compare::@30->compare::@8#0] -- register_copy jmp b8 //SEG147 compare::@8 b8: @@ -3713,19 +3747,19 @@ compare: { //SEG149 [58] call print_sword //SEG150 [81] phi from compare::@8 to print_sword [phi:compare::@8->print_sword] print_sword_from_b8: - //SEG151 [81] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#71 [phi:compare::@8->print_sword#0] -- register_copy + //SEG151 [81] phi (byte*) print_char_cursor#62 = (byte*) print_char_cursor#74 [phi:compare::@8->print_sword#0] -- register_copy //SEG152 [81] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:compare::@8->print_sword#1] -- register_copy jsr print_sword jmp b31 //SEG153 compare::@31 b31: - //SEG154 [59] (byte) print_char::ch#4 ← (byte) compare::r#10 -- vbuaa=vbuz1 + //SEG154 [59] (byte) print_char::ch#5 ← (byte) compare::r#10 -- vbuaa=vbuz1 lda r //SEG155 [60] call print_char //SEG156 [77] phi from compare::@31 to print_char [phi:compare::@31->print_char] print_char_from_b31: - //SEG157 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#14 [phi:compare::@31->print_char#0] -- register_copy - //SEG158 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:compare::@31->print_char#1] -- register_copy + //SEG157 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:compare::@31->print_char#0] -- register_copy + //SEG158 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#5 [phi:compare::@31->print_char#1] -- register_copy jsr print_char jmp breturn //SEG159 compare::@return @@ -3940,10 +3974,10 @@ compare: { // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG222 [78] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa + //SEG222 [78] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG223 [79] (byte*) print_char_cursor#14 ← ++ (byte*) print_char_cursor#43 -- pbuz1=_inc_pbuz1 + //SEG223 [79] (byte*) print_char_cursor#15 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -3956,28 +3990,55 @@ print_char: { } //SEG226 print_sword // Print a signed word as HEX -// print_sword(signed word zeropage($a) w) +// print_sword(signed word zeropage($c) w) print_sword: { - .label w = $a - //SEG227 [82] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + .label w = $c + //SEG227 [82] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG228 [83] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG229 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG228 [83] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG229 print_sword::@3 + b3: //SEG230 [84] call print_char - //SEG231 [77] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG232 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#61 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG233 [77] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG231 [77] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG232 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#62 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG233 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG234 [85] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG235 [85] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG236 print_sword::@2 + b2: + //SEG237 [86] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + //SEG238 [87] call print_word + jsr print_word + jmp breturn + //SEG239 print_sword::@return + breturn: + //SEG240 [88] return + rts + //SEG241 [89] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG242 print_sword::@1 + b1: + //SEG243 [90] call print_char + //SEG244 [77] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG245 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#62 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG246 [77] phi (byte) print_char::ch#7 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG234 print_sword::@3 - b3: - //SEG235 [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG247 print_sword::@4 + b4: + //SEG248 [91] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -3985,166 +4046,149 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG236 [86] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG237 [86] phi (byte*) print_char_cursor#60 = (byte*) print_char_cursor#61 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG238 [86] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG239 print_sword::@1 - b1: - //SEG240 [87] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - //SEG241 [88] call print_word - jsr print_word - jmp breturn - //SEG242 print_sword::@return - breturn: - //SEG243 [89] return - rts + jmp b2_from_b4 } -//SEG244 print_word +//SEG249 print_word // Print a word as HEX -// print_word(word zeropage($a) w) +// print_word(word zeropage($c) w) print_word: { - .label w = $a - //SEG245 [90] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + .label w = $c + //SEG250 [92] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG246 [91] call print_byte - //SEG247 [95] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG251 [93] call print_byte + //SEG252 [97] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG248 [95] phi (byte*) print_char_cursor#63 = (byte*) print_char_cursor#60 [phi:print_word->print_byte#0] -- register_copy - //SEG249 [95] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG253 [97] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte jmp b1 - //SEG250 print_word::@1 + //SEG254 print_word::@1 b1: - //SEG251 [92] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG255 [94] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG252 [93] call print_byte - //SEG253 [95] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG256 [95] call print_byte + //SEG257 [97] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG254 [95] phi (byte*) print_char_cursor#63 = (byte*) print_char_cursor#14 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG255 [95] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG258 [97] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte jmp breturn - //SEG256 print_word::@return + //SEG259 print_word::@return breturn: - //SEG257 [94] return + //SEG260 [96] return rts } -//SEG258 print_byte +//SEG261 print_byte // Print a byte as HEX // print_byte(byte zeropage($e) b) print_byte: { .label b = $e - //SEG259 [96] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + //SEG262 [98] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG260 [97] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG263 [99] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG261 [98] call print_char - //SEG262 [77] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG264 [100] call print_char + //SEG265 [77] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG263 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#63 [phi:print_byte->print_char#0] -- register_copy - //SEG264 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG266 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:print_byte->print_char#0] -- register_copy + //SEG267 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG265 print_byte::@1 + //SEG268 print_byte::@1 b1: - //SEG266 [99] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG269 [101] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG267 [100] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG270 [102] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG268 [101] call print_char - //SEG269 [77] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG271 [103] call print_char + //SEG272 [77] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG270 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#14 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG271 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG273 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG274 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG272 print_byte::@return + //SEG275 print_byte::@return breturn: - //SEG273 [102] return + //SEG276 [104] return rts } -//SEG274 print_str +//SEG277 print_str // Print a zero-terminated string // print_str(byte* zeropage(7) str) print_str: { .label str = 7 - //SEG275 [104] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG278 [106] 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: - //SEG276 [104] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#14 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG277 [104] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG279 [106] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#15 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG280 [106] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG278 print_str::@1 + //SEG281 print_str::@1 b1: - //SEG279 [105] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG282 [107] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG280 print_str::@return + //SEG283 print_str::@return breturn: - //SEG281 [106] return + //SEG284 [108] return rts - //SEG282 print_str::@2 + //SEG285 print_str::@2 b2: - //SEG283 [107] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG286 [109] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG284 [108] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG287 [110] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG285 [109] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG288 [111] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG286 print_cls +//SEG289 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $f - //SEG287 [111] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG290 [113] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG288 [111] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG291 [113] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG289 [111] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG292 [113] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG290 [111] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG293 [113] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG291 print_cls::@1 + //SEG294 print_cls::@1 b1: - //SEG292 [112] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG295 [114] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG293 [113] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG296 [115] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG294 [114] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG297 [116] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -4152,12 +4196,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG295 print_cls::@return + //SEG298 print_cls::@return breturn: - //SEG296 [115] return + //SEG299 [117] return rts } -//SEG297 File Data +//SEG300 File Data print_hextab: .text "0123456789abcdef" swords: .word -$6fed, $12, $7fed @@ -4204,11 +4248,12 @@ Removing instruction jmp b27 Removing instruction jmp b20 Removing instruction jmp b28 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 -Removing instruction jmp b1 +Removing instruction jmp b2 Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn @@ -4229,6 +4274,7 @@ Replacing label b1_from_b1 with b1 Replacing label b7_from_b6 with b7 Replacing label b8_from_b30 with b8 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_b2 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 @@ -4273,10 +4319,12 @@ Removing instruction b6_from_b27: Removing instruction b20_from_b1: Removing instruction b28_from_b20: Removing instruction b6_from_b28: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: +Removing instruction print_char_from_b1: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: Removing instruction b1_from_b1: @@ -4315,9 +4363,9 @@ Removing instruction b18: Removing instruction b19: Removing instruction b20: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -4429,7 +4477,7 @@ FINAL SYMBOL TABLE (byte) compare::r#21 r zp ZP_BYTE:9 2.0 (byte) compare::r#22 r zp ZP_BYTE:9 2.0 (signed word) compare::w1 -(signed word) compare::w1#0 w1 zp ZP_WORD:10 31.78125 +(signed word) compare::w1#0 w1 zp ZP_WORD:12 31.78125 (signed word) compare::w2 (signed word) compare::w2#0 w2 zp ZP_WORD:19 26.076923076923077 (void()) main() @@ -4476,25 +4524,23 @@ FINAL SYMBOL TABLE (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 8.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#7 reg byte a 8.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:12 10001.0 -(byte*~) print_char_cursor#128 print_char_cursor zp ZP_WORD:12 2002.0 -(byte*) print_char_cursor#14 print_char_cursor zp ZP_WORD:12 344.3125 -(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:12 4287.0 -(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:12 8.0 -(byte*) print_char_cursor#60 print_char_cursor zp ZP_WORD:12 2.0 -(byte*) print_char_cursor#61 print_char_cursor zp ZP_WORD:12 2.6666666666666665 -(byte*) print_char_cursor#63 print_char_cursor zp ZP_WORD:12 2.0 -(byte*) print_char_cursor#67 print_char_cursor zp ZP_WORD:12 35.677419354838705 -(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:12 3.0 -(byte*) print_char_cursor#71 print_char_cursor zp ZP_WORD:12 3.0 -(byte*) print_char_cursor#75 print_char_cursor zp ZP_WORD:12 71.0 -(byte*) print_char_cursor#76 print_char_cursor zp ZP_WORD:12 445.0 -(byte*) print_char_cursor#80 print_char_cursor zp ZP_WORD:12 7.333333333333333 +(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 10001.0 +(byte*~) print_char_cursor#128 print_char_cursor zp ZP_WORD:10 2002.0 +(byte*) print_char_cursor#15 print_char_cursor zp ZP_WORD:10 282.46153846153845 +(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:10 4287.0 +(byte*) print_char_cursor#45 print_char_cursor zp ZP_WORD:10 9.0 +(byte*) print_char_cursor#62 print_char_cursor zp ZP_WORD:10 2.0 +(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:10 35.677419354838705 +(byte*) print_char_cursor#73 print_char_cursor zp ZP_WORD:10 3.0 +(byte*) print_char_cursor#74 print_char_cursor zp ZP_WORD:10 3.0 +(byte*) print_char_cursor#78 print_char_cursor zp ZP_WORD:10 71.0 +(byte*) print_char_cursor#79 print_char_cursor zp ZP_WORD:10 445.0 +(byte*) print_char_cursor#83 print_char_cursor zp ZP_WORD:10 7.333333333333333 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -4526,18 +4572,19 @@ FINAL SYMBOL TABLE (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp ZP_WORD:10 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:10 4.0 -(signed word) print_sword::w#2 w zp ZP_WORD:10 4.0 -(signed word) print_sword::w#3 w zp ZP_WORD:10 2.5 -(signed word) print_sword::w#4 w zp ZP_WORD:10 4.0 +(signed word) print_sword::w#0 w zp ZP_WORD:12 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:12 4.0 +(signed word) print_sword::w#2 w zp ZP_WORD:12 4.0 +(signed word) print_sword::w#3 w zp ZP_WORD:12 1.6666666666666665 +(signed word) print_sword::w#5 w zp ZP_WORD:12 4.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:10 2.0 +(word) print_word::w#0 w zp ZP_WORD:12 2.0 (signed word[]) swords (const signed word[]) swords#0 swords = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed } @@ -4548,9 +4595,9 @@ zp ZP_BYTE:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:7 [ compare::ops#10 print_str::str#2 print_str::str#1 print_str::str#0 ] zp ZP_BYTE:9 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] -reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:10 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 compare::w1#0 print_word::w#0 ] -zp ZP_WORD:12 [ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] +reg byte a [ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:10 [ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] +zp ZP_WORD:12 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] reg byte a [ main::$8 ] @@ -4563,7 +4610,7 @@ reg byte a [ print_byte::$2 ] FINAL ASSEMBLER -Score: 966645 +Score: 966656 //SEG0 File Comments // Test signed word comparisons @@ -4582,7 +4629,7 @@ Score: 966645 .const FF = $57 // filled circle .const TT = $51 - .label print_char_cursor = $c + .label print_char_cursor = $a .label print_line_cursor = 5 //SEG3 @begin //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -4599,7 +4646,7 @@ main: { .label j = 3 .label i = 2 //SEG11 [5] call print_cls - //SEG12 [110] phi from main to print_cls [phi:main->print_cls] + //SEG12 [112] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 [6] phi (byte*) print_line_cursor#31 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 @@ -4610,7 +4657,7 @@ main: { //SEG15 [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta s - //SEG16 [6] phi (byte*) print_char_cursor#80 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#83 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -4621,7 +4668,7 @@ main: { //SEG18 [6] phi from main::@7 to main::@1 [phi:main::@7->main::@1] //SEG19 [6] phi (byte*) print_line_cursor#31 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy //SEG20 [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - //SEG21 [6] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#76 [phi:main::@7->main::@1#2] -- register_copy + //SEG21 [6] phi (byte*) print_char_cursor#83 = (byte*) print_char_cursor#79 [phi:main::@7->main::@1#2] -- register_copy //SEG22 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy //SEG23 main::@1 b1: @@ -4637,14 +4684,14 @@ main: { //SEG26 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG27 [9] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#31 [phi:main::@1->main::@2#0] -- register_copy //SEG28 [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - //SEG29 [9] phi (byte*) print_char_cursor#75 = (byte*) print_char_cursor#80 [phi:main::@1->main::@2#2] -- register_copy + //SEG29 [9] phi (byte*) print_char_cursor#78 = (byte*) print_char_cursor#83 [phi:main::@1->main::@2#2] -- register_copy //SEG30 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta j //SEG31 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] //SEG32 [9] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy //SEG33 [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy - //SEG34 [9] phi (byte*) print_char_cursor#75 = (byte*) print_char_cursor#76 [phi:main::@6->main::@2#2] -- register_copy + //SEG34 [9] phi (byte*) print_char_cursor#78 = (byte*) print_char_cursor#79 [phi:main::@6->main::@2#2] -- register_copy //SEG35 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy //SEG36 main::@2 b2: @@ -4660,13 +4707,13 @@ main: { //SEG39 [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG40 [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#29 [phi:main::@2->main::@3#0] -- register_copy //SEG41 [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy - //SEG42 [12] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#75 [phi:main::@2->main::@3#2] -- register_copy + //SEG42 [12] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#78 [phi:main::@2->main::@3#2] -- register_copy //SEG43 [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 ldx #0 //SEG44 [12] phi from main::@4 to main::@3 [phi:main::@4->main::@3] //SEG45 [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#23 [phi:main::@4->main::@3#0] -- register_copy //SEG46 [12] phi (byte) main::s#3 = (byte) main::s#10 [phi:main::@4->main::@3#1] -- register_copy - //SEG47 [12] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#76 [phi:main::@4->main::@3#2] -- register_copy + //SEG47 [12] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#79 [phi:main::@4->main::@3#2] -- register_copy //SEG48 [12] phi (byte) main::op#2 = (byte) main::op#1 [phi:main::@4->main::@3#3] -- register_copy //SEG49 main::@3 b3: @@ -4702,11 +4749,11 @@ main: { //SEG65 [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta s - //SEG66 [22] phi (byte*) print_char_cursor#76 = (byte*~) print_char_cursor#128 [phi:main::@10->main::@4#2] -- register_copy + //SEG66 [22] phi (byte*) print_char_cursor#79 = (byte*~) print_char_cursor#128 [phi:main::@10->main::@4#2] -- register_copy //SEG67 [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] //SEG68 [22] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#19 [phi:main::@9->main::@4#0] -- register_copy //SEG69 [22] phi (byte) main::s#10 = (byte) main::s#1 [phi:main::@9->main::@4#1] -- register_copy - //SEG70 [22] phi (byte*) print_char_cursor#76 = (byte*) print_char_cursor#14 [phi:main::@9->main::@4#2] -- register_copy + //SEG70 [22] phi (byte*) print_char_cursor#79 = (byte*) print_char_cursor#15 [phi:main::@9->main::@4#2] -- register_copy //SEG71 main::@4 b4: //SEG72 [23] (byte) main::op#1 ← ++ (byte) main::op#2 -- vbuxx=_inc_vbuxx @@ -4748,7 +4795,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG87 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG87 [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -4763,9 +4810,9 @@ print_ln: { } //SEG90 compare // Compare two words using an operator -// compare(signed word zeropage($a) w1, signed word zeropage($13) w2, byte register(X) op) +// compare(signed word zeropage($c) w1, signed word zeropage($13) w2, byte register(X) op) compare: { - .label w1 = $a + .label w1 = $c .label w2 = $13 .label ops = 7 .label r = 9 @@ -4849,24 +4896,24 @@ compare: { //SEG120 compare::@21 //SEG121 [47] call print_char //SEG122 [77] phi from compare::@21 to print_char [phi:compare::@21->print_char] - //SEG123 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#67 [phi:compare::@21->print_char#0] -- register_copy - //SEG124 [77] phi (byte) print_char::ch#6 = (byte) ' ' [phi:compare::@21->print_char#1] -- vbuaa=vbuc1 + //SEG123 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#70 [phi:compare::@21->print_char#0] -- register_copy + //SEG124 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:compare::@21->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG125 [48] phi from compare::@21 compare::@6 to compare::@7 [phi:compare::@21/compare::@6->compare::@7] - //SEG126 [48] phi (byte*) print_char_cursor#70 = (byte*) print_char_cursor#14 [phi:compare::@21/compare::@6->compare::@7#0] -- register_copy + //SEG126 [48] phi (byte*) print_char_cursor#73 = (byte*) print_char_cursor#15 [phi:compare::@21/compare::@6->compare::@7#0] -- register_copy //SEG127 compare::@7 b7: //SEG128 [49] (signed word) print_sword::w#1 ← (signed word) compare::w1#0 //SEG129 [50] call print_sword //SEG130 [81] phi from compare::@7 to print_sword [phi:compare::@7->print_sword] - //SEG131 [81] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#70 [phi:compare::@7->print_sword#0] -- register_copy + //SEG131 [81] phi (byte*) print_char_cursor#62 = (byte*) print_char_cursor#73 [phi:compare::@7->print_sword#0] -- register_copy //SEG132 [81] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:compare::@7->print_sword#1] -- register_copy jsr print_sword //SEG133 compare::@29 //SEG134 [51] (byte*) print_str::str#1 ← (byte*) compare::ops#10 //SEG135 [52] call print_str - //SEG136 [103] phi from compare::@29 to print_str [phi:compare::@29->print_str] + //SEG136 [105] phi from compare::@29 to print_str [phi:compare::@29->print_str] jsr print_str //SEG137 compare::@30 //SEG138 [53] if((signed word) compare::w2#0<(signed byte) 0) goto compare::@8 -- vwsz1_lt_0_then_la1 @@ -4876,12 +4923,12 @@ compare: { //SEG140 compare::@22 //SEG141 [55] call print_char //SEG142 [77] phi from compare::@22 to print_char [phi:compare::@22->print_char] - //SEG143 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#2 [phi:compare::@22->print_char#0] -- register_copy - //SEG144 [77] phi (byte) print_char::ch#6 = (byte) ' ' [phi:compare::@22->print_char#1] -- vbuaa=vbuc1 + //SEG143 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#2 [phi:compare::@22->print_char#0] -- register_copy + //SEG144 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:compare::@22->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG145 [56] phi from compare::@22 compare::@30 to compare::@8 [phi:compare::@22/compare::@30->compare::@8] - //SEG146 [56] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#14 [phi:compare::@22/compare::@30->compare::@8#0] -- register_copy + //SEG146 [56] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#15 [phi:compare::@22/compare::@30->compare::@8#0] -- register_copy //SEG147 compare::@8 b8: //SEG148 [57] (signed word) print_sword::w#2 ← (signed word) compare::w2#0 -- vwsz1=vwsz2 @@ -4891,16 +4938,16 @@ compare: { sta print_sword.w+1 //SEG149 [58] call print_sword //SEG150 [81] phi from compare::@8 to print_sword [phi:compare::@8->print_sword] - //SEG151 [81] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#71 [phi:compare::@8->print_sword#0] -- register_copy + //SEG151 [81] phi (byte*) print_char_cursor#62 = (byte*) print_char_cursor#74 [phi:compare::@8->print_sword#0] -- register_copy //SEG152 [81] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:compare::@8->print_sword#1] -- register_copy jsr print_sword //SEG153 compare::@31 - //SEG154 [59] (byte) print_char::ch#4 ← (byte) compare::r#10 -- vbuaa=vbuz1 + //SEG154 [59] (byte) print_char::ch#5 ← (byte) compare::r#10 -- vbuaa=vbuz1 lda r //SEG155 [60] call print_char //SEG156 [77] phi from compare::@31 to print_char [phi:compare::@31->print_char] - //SEG157 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#14 [phi:compare::@31->print_char#0] -- register_copy - //SEG158 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:compare::@31->print_char#1] -- register_copy + //SEG157 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:compare::@31->print_char#0] -- register_copy + //SEG158 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#5 [phi:compare::@31->print_char#1] -- register_copy jsr print_char //SEG159 compare::@return //SEG160 [61] return @@ -5083,10 +5130,10 @@ compare: { // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG222 [78] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa + //SEG222 [78] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG223 [79] (byte*) print_char_cursor#14 ← ++ (byte*) print_char_cursor#43 -- pbuz1=_inc_pbuz1 + //SEG223 [79] (byte*) print_char_cursor#15 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -5097,22 +5144,41 @@ print_char: { } //SEG226 print_sword // Print a signed word as HEX -// print_sword(signed word zeropage($a) w) +// print_sword(signed word zeropage($c) w) print_sword: { - .label w = $a - //SEG227 [82] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + .label w = $c + //SEG227 [82] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG228 [83] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG229 print_sword::@2 + bmi b1 + //SEG228 [83] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG229 print_sword::@3 //SEG230 [84] call print_char - //SEG231 [77] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG232 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#61 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG233 [77] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG231 [77] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG232 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#62 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG233 [77] phi (byte) print_char::ch#7 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG234 [85] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG235 [85] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG236 print_sword::@2 + b2: + //SEG237 [86] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + //SEG238 [87] call print_word + jsr print_word + //SEG239 print_sword::@return + //SEG240 [88] return + rts + //SEG241 [89] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG242 print_sword::@1 + b1: + //SEG243 [90] call print_char + //SEG244 [77] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG245 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#62 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG246 [77] phi (byte) print_char::ch#7 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG234 print_sword::@3 - //SEG235 [85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + //SEG247 print_sword::@4 + //SEG248 [91] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -5120,150 +5186,138 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG236 [86] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG237 [86] phi (byte*) print_char_cursor#60 = (byte*) print_char_cursor#61 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG238 [86] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG239 print_sword::@1 - b1: - //SEG240 [87] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - //SEG241 [88] call print_word - jsr print_word - //SEG242 print_sword::@return - //SEG243 [89] return - rts + jmp b2 } -//SEG244 print_word +//SEG249 print_word // Print a word as HEX -// print_word(word zeropage($a) w) +// print_word(word zeropage($c) w) print_word: { - .label w = $a - //SEG245 [90] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + .label w = $c + //SEG250 [92] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG246 [91] call print_byte - //SEG247 [95] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG248 [95] phi (byte*) print_char_cursor#63 = (byte*) print_char_cursor#60 [phi:print_word->print_byte#0] -- register_copy - //SEG249 [95] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG251 [93] call print_byte + //SEG252 [97] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG253 [97] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte - //SEG250 print_word::@1 - //SEG251 [92] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG254 print_word::@1 + //SEG255 [94] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG252 [93] call print_byte - //SEG253 [95] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG254 [95] phi (byte*) print_char_cursor#63 = (byte*) print_char_cursor#14 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG255 [95] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG256 [95] call print_byte + //SEG257 [97] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG258 [97] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte - //SEG256 print_word::@return - //SEG257 [94] return + //SEG259 print_word::@return + //SEG260 [96] return rts } -//SEG258 print_byte +//SEG261 print_byte // Print a byte as HEX // print_byte(byte zeropage($e) b) print_byte: { .label b = $e - //SEG259 [96] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + //SEG262 [98] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG260 [97] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG263 [99] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG261 [98] call print_char - //SEG262 [77] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG263 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#63 [phi:print_byte->print_char#0] -- register_copy - //SEG264 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG264 [100] call print_char + //SEG265 [77] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG266 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:print_byte->print_char#0] -- register_copy + //SEG267 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG265 print_byte::@1 - //SEG266 [99] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG268 print_byte::@1 + //SEG269 [101] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG267 [100] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG270 [102] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG268 [101] call print_char - //SEG269 [77] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG270 [77] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#14 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG271 [77] phi (byte) print_char::ch#6 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG271 [103] call print_char + //SEG272 [77] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG273 [77] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#15 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG274 [77] phi (byte) print_char::ch#7 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG272 print_byte::@return - //SEG273 [102] return + //SEG275 print_byte::@return + //SEG276 [104] return rts } -//SEG274 print_str +//SEG277 print_str // Print a zero-terminated string // print_str(byte* zeropage(7) str) print_str: { .label str = 7 - //SEG275 [104] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG276 [104] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#14 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG277 [104] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG278 print_str::@1 + //SEG278 [106] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG279 [106] phi (byte*) print_char_cursor#2 = (byte*) print_char_cursor#15 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG280 [106] phi (byte*) print_str::str#2 = (byte*) print_str::str#1 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG281 print_str::@1 b1: - //SEG279 [105] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG282 [107] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG280 print_str::@return - //SEG281 [106] return + //SEG283 print_str::@return + //SEG284 [108] return rts - //SEG282 print_str::@2 + //SEG285 print_str::@2 b2: - //SEG283 [107] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG286 [109] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG284 [108] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 + //SEG287 [110] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG285 [109] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 + //SEG288 [111] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG286 print_cls +//SEG289 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $f - //SEG287 [111] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG288 [111] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG290 [113] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG291 [113] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG289 [111] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG290 [111] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG291 print_cls::@1 + //SEG292 [113] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG293 [113] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG294 print_cls::@1 b1: - //SEG292 [112] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG295 [114] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG293 [113] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG296 [115] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG294 [114] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG297 [116] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG295 print_cls::@return - //SEG296 [115] return + //SEG298 print_cls::@return + //SEG299 [117] return rts } -//SEG297 File Data +//SEG300 File Data print_hextab: .text "0123456789abcdef" swords: .word -$6fed, $12, $7fed diff --git a/src/test/ref/test-comparisons-sword.sym b/src/test/ref/test-comparisons-sword.sym index f18163b70..62f2644ff 100644 --- a/src/test/ref/test-comparisons-sword.sym +++ b/src/test/ref/test-comparisons-sword.sym @@ -69,7 +69,7 @@ (byte) compare::r#21 r zp ZP_BYTE:9 2.0 (byte) compare::r#22 r zp ZP_BYTE:9 2.0 (signed word) compare::w1 -(signed word) compare::w1#0 w1 zp ZP_WORD:10 31.78125 +(signed word) compare::w1#0 w1 zp ZP_WORD:12 31.78125 (signed word) compare::w2 (signed word) compare::w2#0 w2 zp ZP_WORD:19 26.076923076923077 (void()) main() @@ -116,25 +116,23 @@ (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#6 reg byte a 8.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#7 reg byte a 8.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:12 10001.0 -(byte*~) print_char_cursor#128 print_char_cursor zp ZP_WORD:12 2002.0 -(byte*) print_char_cursor#14 print_char_cursor zp ZP_WORD:12 344.3125 -(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:12 4287.0 -(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:12 8.0 -(byte*) print_char_cursor#60 print_char_cursor zp ZP_WORD:12 2.0 -(byte*) print_char_cursor#61 print_char_cursor zp ZP_WORD:12 2.6666666666666665 -(byte*) print_char_cursor#63 print_char_cursor zp ZP_WORD:12 2.0 -(byte*) print_char_cursor#67 print_char_cursor zp ZP_WORD:12 35.677419354838705 -(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:12 3.0 -(byte*) print_char_cursor#71 print_char_cursor zp ZP_WORD:12 3.0 -(byte*) print_char_cursor#75 print_char_cursor zp ZP_WORD:12 71.0 -(byte*) print_char_cursor#76 print_char_cursor zp ZP_WORD:12 445.0 -(byte*) print_char_cursor#80 print_char_cursor zp ZP_WORD:12 7.333333333333333 +(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 10001.0 +(byte*~) print_char_cursor#128 print_char_cursor zp ZP_WORD:10 2002.0 +(byte*) print_char_cursor#15 print_char_cursor zp ZP_WORD:10 282.46153846153845 +(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:10 4287.0 +(byte*) print_char_cursor#45 print_char_cursor zp ZP_WORD:10 9.0 +(byte*) print_char_cursor#62 print_char_cursor zp ZP_WORD:10 2.0 +(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:10 35.677419354838705 +(byte*) print_char_cursor#73 print_char_cursor zp ZP_WORD:10 3.0 +(byte*) print_char_cursor#74 print_char_cursor zp ZP_WORD:10 3.0 +(byte*) print_char_cursor#78 print_char_cursor zp ZP_WORD:10 71.0 +(byte*) print_char_cursor#79 print_char_cursor zp ZP_WORD:10 445.0 +(byte*) print_char_cursor#83 print_char_cursor zp ZP_WORD:10 7.333333333333333 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -166,18 +164,19 @@ (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w -(signed word) print_sword::w#0 w zp ZP_WORD:10 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:10 4.0 -(signed word) print_sword::w#2 w zp ZP_WORD:10 4.0 -(signed word) print_sword::w#3 w zp ZP_WORD:10 2.5 -(signed word) print_sword::w#4 w zp ZP_WORD:10 4.0 +(signed word) print_sword::w#0 w zp ZP_WORD:12 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:12 4.0 +(signed word) print_sword::w#2 w zp ZP_WORD:12 4.0 +(signed word) print_sword::w#3 w zp ZP_WORD:12 1.6666666666666665 +(signed word) print_sword::w#5 w zp ZP_WORD:12 4.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:10 2.0 +(word) print_word::w#0 w zp ZP_WORD:12 2.0 (signed word[]) swords (const signed word[]) swords#0 swords = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed } @@ -188,9 +187,9 @@ zp ZP_BYTE:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:7 [ compare::ops#10 print_str::str#2 print_str::str#1 print_str::str#0 ] zp ZP_BYTE:9 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ] -reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:10 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 compare::w1#0 print_word::w#0 ] -zp ZP_WORD:12 [ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ] +reg byte a [ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:10 [ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ] +zp ZP_WORD:12 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] reg byte a [ main::$8 ] diff --git a/src/test/ref/test-division.asm b/src/test/ref/test-division.asm index 778715226..28261403e 100644 --- a/src/test/ref/test-division.asm +++ b/src/test/ref/test-division.asm @@ -2,7 +2,7 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label print_char_cursor = 8 + .label print_char_cursor = 7 .label print_line_cursor = 3 .label rem16u = $12 .label rem16s = $12 @@ -103,7 +103,13 @@ print_ln: { print_sword: { .label w = 5 lda w+1 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_word + rts + b1: lda #'-' jsr print_char sec @@ -113,8 +119,17 @@ print_sword: { lda #0 sbc w+1 sta w+1 - b1: - jsr print_word + jmp b2 +} +// Print a single char +// print_char(byte register(A) ch) +print_char: { + ldy #0 + sta (print_char_cursor),y + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: rts } // Print a word as HEX @@ -130,9 +145,9 @@ print_word: { rts } // Print a byte as HEX -// print_byte(byte zeropage(7) b) +// print_byte(byte zeropage(9) b) print_byte: { - .label b = 7 + .label b = 9 lda b lsr lsr @@ -148,17 +163,6 @@ print_byte: { jsr print_char rts } -// Print a single char -// print_char(byte register(A) ch) -print_char: { - ldy #0 - sta (print_char_cursor),y - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - rts -} // Print a zero-terminated string // print_str(byte* zeropage($a) str) print_str: { @@ -326,7 +330,7 @@ divr16u: { rts } test_8s: { - .label dividend = 7 + .label dividend = 9 .label divisor = $1e .label res = $1f .label i = $14 @@ -380,9 +384,9 @@ test_8s: { divisors: .byte 5, 7, -$b, -$d, $11, $13 } // Print a signed byte as HEX -// print_sbyte(signed byte zeropage(7) b) +// print_sbyte(signed byte zeropage(9) b) print_sbyte: { - .label b = 7 + .label b = 9 lda b bmi b1 lda #' ' @@ -592,7 +596,7 @@ div16u: { rts } test_8u: { - .label dividend = 7 + .label dividend = 9 .label divisor = $21 .label res = $22 .label i = $19 diff --git a/src/test/ref/test-division.cfg b/src/test/ref/test-division.cfg index 86ef8781f..2358f07b3 100644 --- a/src/test/ref/test-division.cfg +++ b/src/test/ref/test-division.cfg @@ -46,7 +46,7 @@ test_16s::@1: scope:[test_16s] from test_16s test_16s::@10 test_16s::@2: scope:[test_16s] from test_16s::@1 [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - [26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 + [26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1 [27] call print_sword to:test_16s::@3 test_16s::@3: scope:[test_16s] from test_16s::@2 @@ -90,494 +90,497 @@ print_ln: scope:[print_ln] from test_16s::@9 test_16u::@9 test_8s::@9 test_8u:: print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [46] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 - [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 + [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [49] return to:@return print_sword: scope:[print_sword] from test_16s::@2 test_16s::@4 test_16s::@6 test_16s::@8 - [50] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#161 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 ) - [50] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 ) - [51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [50] (byte*) print_char_cursor#132 ← phi( test_16s::@2/(byte*~) print_char_cursor#164 test_16s::@4/(byte*) print_char_cursor#130 test_16s::@6/(byte*) print_char_cursor#130 test_16s::@8/(byte*) print_char_cursor#130 ) + [50] (signed word) print_sword::w#10 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 ) + [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [52] phi() [53] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [55] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 ) - [55] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 ) - [56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 - [57] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [54] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 ) + [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + [56] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [58] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [57] return to:@return -print_word: scope:[print_word] from print_sword::@1 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8 - [59] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#172 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 ) - [59] (word) print_word::w#5 ← phi( print_sword::@1/(word) print_word::w#0 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 ) - [60] (byte) print_byte::b#1 ← > (word) print_word::w#5 - [61] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [62] (byte) print_byte::b#2 ← < (word) print_word::w#5 - [63] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [64] return - to:@return -print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8 - [65] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 ) - [65] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 ) - [66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 - [67] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [68] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f - [70] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [71] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [72] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - [73] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 ) - [73] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) - [74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 - [75] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 +print_sword::@1: scope:[print_sword] from print_sword + [58] phi() + [59] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + [61] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#135 print_sbyte::@3/(byte*) print_char_cursor#135 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#132 ) + [61] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 + [63] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#84 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [76] return + [64] return + to:@return +print_word: scope:[print_word] from print_sword::@2 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8 + [65] (byte*) print_char_cursor#138 ← phi( print_sword::@2/(byte*) print_char_cursor#19 test_16u::@2/(byte*~) print_char_cursor#173 test_16u::@4/(byte*) print_char_cursor#130 test_16u::@6/(byte*) print_char_cursor#130 test_16u::@8/(byte*) print_char_cursor#130 ) + [65] (word) print_word::w#5 ← phi( print_sword::@2/(word) print_word::w#0 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 ) + [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 + [67] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 + [69] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [70] return + to:@return +print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8 + [71] (byte*) print_char_cursor#139 ← phi( print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#138 print_word::@1/(byte*) print_char_cursor#19 test_8u::@2/(byte*) print_char_cursor#141 test_8u::@4/(byte*) print_char_cursor#130 test_8u::@6/(byte*) print_char_cursor#130 test_8u::@8/(byte*) print_char_cursor#130 ) + [71] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 ) + [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 + [73] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [74] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f + [76] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [77] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [78] return to:@return print_str: scope:[print_str] from test_16s::@3 test_16s::@5 test_16s::@7 test_16u::@3 test_16u::@5 test_16u::@7 test_8s::@3 test_8s::@5 test_8s::@7 test_8u::@3 test_8u::@5 test_8u::@7 - [77] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 ) + [79] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [78] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 ) - [78] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) - [79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 + [80] (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#19 print_str::@2/(byte*) print_char_cursor#1 ) + [80] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) + [81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [80] return + [82] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) - [82] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 - [83] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 + [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) + [84] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 + [85] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 to:print_str::@1 div16s: scope:[div16s] from test_16s::@1 - [84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 - [85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 - [86] call divr16s - [87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 + [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 + [88] call divr16s + [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:div16s::@1 div16s::@1: scope:[div16s] from div16s - [88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 to:div16s::@return div16s::@return: scope:[div16s] from div16s::@1 - [89] return + [91] return to:@return divr16s: scope:[divr16s] from div16s - [90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 + [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 to:divr16s::@6 divr16s::@6: scope:[divr16s] from divr16s - [91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + [93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@6 - [92] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@6/(word~) divr16s::dividendu#8 ) - [92] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 ) - [93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 + [94] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@6/(word~) divr16s::dividendu#8 ) + [94] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 ) + [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 to:divr16s::@7 divr16s::@7: scope:[divr16s] from divr16s::@2 - [94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@7 - [95] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 ) - [95] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@7/(word~) divr16s::divisoru#5 ) - [96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - [97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - [98] call divr16u - [99] (word) divr16u::return#3 ← (word) divr16u::return#0 + [97] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 ) + [97] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@7/(word~) divr16s::divisoru#5 ) + [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + [100] call divr16u + [101] (word) divr16u::return#3 ← (word) divr16u::return#0 to:divr16s::@9 divr16s::@9: scope:[divr16s] from divr16s::@4 - [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - [101] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 + [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + [103] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 to:divr16s::@8 divr16s::@8: scope:[divr16s] from divr16s::@9 - [102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 - [103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 - [104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 + [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 + [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@8 - [105] (signed word) rem16s#11 ← phi( divr16s::@8/(signed word) rem16s#2 divr16s::@5/(signed word~) rem16s#37 ) - [105] (signed word) divr16s::return#2 ← phi( divr16s::@8/(signed word) divr16s::return#1 divr16s::@5/(signed word~) divr16s::return#7 ) - [106] return + [107] (signed word) rem16s#11 ← phi( divr16s::@8/(signed word) rem16s#2 divr16s::@5/(signed word~) rem16s#37 ) + [107] (signed word) divr16s::return#2 ← phi( divr16s::@8/(signed word) divr16s::return#1 divr16s::@5/(signed word~) divr16s::return#7 ) + [108] return to:@return divr16s::@5: scope:[divr16s] from divr16s::@9 - [107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - [108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + [109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 - [110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 - [111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 + [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 + [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 + [113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s - [112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 - [113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 + [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 + [115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 to:divr16s::@2 divr16u: scope:[divr16u] from div16u divr16s::@4 - [114] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 ) - [114] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 ) + [116] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 ) + [116] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [115] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [115] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [115] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [115] (word) divr16u::rem#5 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#11 ) - [116] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [118] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [119] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [117] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [117] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [117] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [117] (word) divr16u::rem#5 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#11 ) + [118] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [120] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [121] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [121] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [122] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [123] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 + [123] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [124] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [125] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [125] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 + [127] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [127] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [127] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [128] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [129] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [129] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [129] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [130] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [131] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [130] (word) rem16u#1 ← (word) divr16u::rem#11 + [132] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [131] return + [133] return to:@return test_8s: scope:[test_8s] from main::@3 - [132] phi() + [134] phi() to:test_8s::@1 test_8s::@1: scope:[test_8s] from test_8s test_8s::@10 - [133] (byte) test_8s::i#10 ← phi( test_8s/(byte) 0 test_8s::@10/(byte) test_8s::i#1 ) - [134] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) - [135] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) - [136] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 - [137] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 - [138] call div8s - [139] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + [135] (byte) test_8s::i#10 ← phi( test_8s/(byte) 0 test_8s::@10/(byte) test_8s::i#1 ) + [136] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) + [137] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) + [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 + [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 + [140] call div8s + [141] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 to:test_8s::@2 test_8s::@2: scope:[test_8s] from test_8s::@1 - [140] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 - [141] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - [142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1 - [143] call print_sbyte + [142] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 + [143] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + [144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1 + [145] call print_sbyte to:test_8s::@3 test_8s::@3: scope:[test_8s] from test_8s::@2 - [144] phi() - [145] call print_str + [146] phi() + [147] call print_str to:test_8s::@4 test_8s::@4: scope:[test_8s] from test_8s::@3 - [146] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 - [147] call print_sbyte + [148] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 + [149] call print_sbyte to:test_8s::@5 test_8s::@5: scope:[test_8s] from test_8s::@4 - [148] phi() - [149] call print_str + [150] phi() + [151] call print_str to:test_8s::@6 test_8s::@6: scope:[test_8s] from test_8s::@5 - [150] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 - [151] call print_sbyte + [152] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 + [153] call print_sbyte to:test_8s::@7 test_8s::@7: scope:[test_8s] from test_8s::@6 - [152] phi() - [153] call print_str + [154] phi() + [155] call print_str to:test_8s::@8 test_8s::@8: scope:[test_8s] from test_8s::@7 - [154] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 - [155] call print_sbyte + [156] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 + [157] call print_sbyte to:test_8s::@9 test_8s::@9: scope:[test_8s] from test_8s::@8 - [156] phi() - [157] call print_ln + [158] phi() + [159] call print_ln to:test_8s::@10 test_8s::@10: scope:[test_8s] from test_8s::@9 - [158] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 - [159] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 + [160] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 + [161] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 to:test_8s::@return test_8s::@return: scope:[test_8s] from test_8s::@10 - [160] return + [162] return to:@return print_sbyte: scope:[print_sbyte] from test_8s::@2 test_8s::@4 test_8s::@6 test_8s::@8 - [161] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#167 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 ) - [161] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 ) - [162] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 + [163] (byte*) print_char_cursor#135 ← phi( test_8s::@2/(byte*~) print_char_cursor#168 test_8s::@4/(byte*) print_char_cursor#130 test_8s::@6/(byte*) print_char_cursor#130 test_8s::@8/(byte*) print_char_cursor#130 ) + [163] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 ) + [164] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [163] phi() - [164] call print_char + [165] phi() + [166] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [165] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 ) - [166] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 - [167] call print_byte + [167] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 ) + [168] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 + [169] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [168] return + [170] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [169] phi() - [170] call print_char + [171] phi() + [172] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 + [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 to:print_sbyte::@2 div8s: scope:[div8s] from test_8s::@1 - [172] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 + [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 to:div8s::@6 div8s::@6: scope:[div8s] from div8s - [173] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + [175] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 to:div8s::@2 div8s::@2: scope:[div8s] from div8s::@1 div8s::@6 - [174] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@6/(byte~) div8s::dividendu#8 ) - [174] (byte) div8s::neg#3 ← phi( div8s::@1/(byte) 1 div8s::@6/(byte) 0 ) - [175] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 + [176] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@6/(byte~) div8s::dividendu#8 ) + [176] (byte) div8s::neg#3 ← phi( div8s::@1/(byte) 1 div8s::@6/(byte) 0 ) + [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 to:div8s::@7 div8s::@7: scope:[div8s] from div8s::@2 - [176] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + [178] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 to:div8s::@4 div8s::@4: scope:[div8s] from div8s::@3 div8s::@7 - [177] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@7/(byte) div8s::neg#3 ) - [177] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@7/(byte~) div8s::divisoru#5 ) - [178] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 - [179] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - [180] call div8u - [181] (byte) div8u::return#2 ← (byte) div8u::return#0 + [179] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@7/(byte) div8s::neg#3 ) + [179] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@7/(byte~) div8s::divisoru#5 ) + [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 + [181] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + [182] call div8u + [183] (byte) div8u::return#2 ← (byte) div8u::return#0 to:div8s::@9 div8s::@9: scope:[div8s] from div8s::@4 - [182] (byte) div8s::resultu#0 ← (byte) div8u::return#2 - [183] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 + [184] (byte) div8s::resultu#0 ← (byte) div8u::return#2 + [185] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 to:div8s::@8 div8s::@8: scope:[div8s] from div8s::@9 - [184] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 - [185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 - [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 + [186] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 + [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 + [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 to:div8s::@return div8s::@return: scope:[div8s] from div8s::@5 div8s::@8 - [187] (signed byte) rem8s#3 ← phi( div8s::@8/(signed byte) rem8s#2 div8s::@5/(signed byte~) rem8s#33 ) - [187] (signed byte) div8s::return#2 ← phi( div8s::@8/(signed byte) div8s::return#1 div8s::@5/(signed byte~) div8s::return#7 ) - [188] return + [189] (signed byte) rem8s#3 ← phi( div8s::@8/(signed byte) rem8s#2 div8s::@5/(signed byte~) rem8s#33 ) + [189] (signed byte) div8s::return#2 ← phi( div8s::@8/(signed byte) div8s::return#1 div8s::@5/(signed byte~) div8s::return#7 ) + [190] return to:@return div8s::@5: scope:[div8s] from div8s::@9 - [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 - [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + [191] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 + [192] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 to:div8s::@return div8s::@3: scope:[div8s] from div8s::@2 - [191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 - [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 - [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 + [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 + [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 + [195] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 to:div8s::@4 div8s::@1: scope:[div8s] from div8s - [194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 - [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 + [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 + [197] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 to:div8s::@2 div8u: scope:[div8u] from div8s::@4 test_8u::@1 - [196] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 ) - [196] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 ) - [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 - [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 - [199] call divr8u - [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 + [198] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 ) + [198] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 ) + [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 + [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 + [201] call divr8u + [202] (byte) divr8u::return#0 ← (byte) divr8u::return#1 to:div8u::@1 div8u::@1: scope:[div8u] from div8u - [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 + [203] (byte) div8u::return#0 ← (byte) divr8u::return#0 to:div8u::@return div8u::@return: scope:[div8u] from div8u::@1 - [202] return + [204] return to:@return divr8u: scope:[divr8u] from div8u - [203] phi() + [205] phi() to:divr8u::@1 divr8u::@1: scope:[divr8u] from divr8u divr8u::@3 - [204] (byte) divr8u::i#2 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::i#1 ) - [204] (byte) divr8u::quotient#3 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::return#1 ) - [204] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 ) - [204] (byte) divr8u::rem#4 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::rem#10 ) - [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 - [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 - [207] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 + [206] (byte) divr8u::i#2 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::i#1 ) + [206] (byte) divr8u::quotient#3 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::return#1 ) + [206] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 ) + [206] (byte) divr8u::rem#4 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::rem#10 ) + [207] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 + [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 + [209] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 to:divr8u::@4 divr8u::@4: scope:[divr8u] from divr8u::@1 - [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 + [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 to:divr8u::@2 divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4 - [209] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 ) - [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 - [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 - [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 + [211] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 ) + [212] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 + [213] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 + [214] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 to:divr8u::@5 divr8u::@5: scope:[divr8u] from divr8u::@2 - [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 - [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 + [215] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 + [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 to:divr8u::@3 divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5 - [215] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 ) - [215] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 ) - [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 - [217] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 + [217] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 ) + [217] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 ) + [218] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 + [219] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 to:divr8u::@6 divr8u::@6: scope:[divr8u] from divr8u::@3 - [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 + [220] (byte) rem8u#17 ← (byte) divr8u::rem#10 to:divr8u::@return divr8u::@return: scope:[divr8u] from divr8u::@6 - [219] return + [221] return to:@return test_16u: scope:[test_16u] from main::@2 - [220] phi() + [222] phi() to:test_16u::@1 test_16u::@1: scope:[test_16u] from test_16u test_16u::@10 - [221] (byte) test_16u::i#10 ← phi( test_16u/(byte) 0 test_16u::@10/(byte) test_16u::i#1 ) - [222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 - [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) - [224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) - [225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - [226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - [227] call div16u - [228] (word) div16u::return#2 ← (word) div16u::return#0 + [223] (byte) test_16u::i#10 ← phi( test_16u/(byte) 0 test_16u::@10/(byte) test_16u::i#1 ) + [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 + [225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) + [226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) + [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + [229] call div16u + [230] (word) div16u::return#2 ← (word) div16u::return#0 to:test_16u::@2 test_16u::@2: scope:[test_16u] from test_16u::@1 - [229] (word) test_16u::res#0 ← (word) div16u::return#2 - [230] (word) print_word::w#1 ← (word) test_16u::dividend#0 - [231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1 - [232] call print_word + [231] (word) test_16u::res#0 ← (word) div16u::return#2 + [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 + [233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1 + [234] call print_word to:test_16u::@3 test_16u::@3: scope:[test_16u] from test_16u::@2 - [233] phi() - [234] call print_str + [235] phi() + [236] call print_str to:test_16u::@4 test_16u::@4: scope:[test_16u] from test_16u::@3 - [235] (word) print_word::w#2 ← (word) test_16u::divisor#0 - [236] call print_word + [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 + [238] call print_word to:test_16u::@5 test_16u::@5: scope:[test_16u] from test_16u::@4 - [237] phi() - [238] call print_str + [239] phi() + [240] call print_str to:test_16u::@6 test_16u::@6: scope:[test_16u] from test_16u::@5 - [239] (word) print_word::w#3 ← (word) test_16u::res#0 - [240] call print_word + [241] (word) print_word::w#3 ← (word) test_16u::res#0 + [242] call print_word to:test_16u::@7 test_16u::@7: scope:[test_16u] from test_16u::@6 - [241] phi() - [242] call print_str + [243] phi() + [244] call print_str to:test_16u::@8 test_16u::@8: scope:[test_16u] from test_16u::@7 - [243] (word) print_word::w#4 ← (word) rem16u#1 - [244] call print_word + [245] (word) print_word::w#4 ← (word) rem16u#1 + [246] call print_word to:test_16u::@9 test_16u::@9: scope:[test_16u] from test_16u::@8 - [245] phi() - [246] call print_ln + [247] phi() + [248] call print_ln to:test_16u::@10 test_16u::@10: scope:[test_16u] from test_16u::@9 - [247] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 - [248] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 + [249] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 + [250] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 to:test_16u::@return test_16u::@return: scope:[test_16u] from test_16u::@10 - [249] return + [251] return to:@return div16u: scope:[div16u] from test_16u::@1 - [250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 - [251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - [252] call divr16u - [253] (word) divr16u::return#2 ← (word) divr16u::return#0 + [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 + [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + [254] call divr16u + [255] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@1 div16u::@1: scope:[div16u] from div16u - [254] (word) div16u::return#0 ← (word) divr16u::return#2 + [256] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@1 - [255] return + [257] return to:@return test_8u: scope:[test_8u] from main::@1 - [256] phi() + [258] phi() to:test_8u::@1 test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 - [257] (byte*) print_line_cursor#41 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*) print_line_cursor#1 ) - [257] (byte*) print_char_cursor#138 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*~) print_char_cursor#188 ) - [257] (byte) test_8u::i#10 ← phi( test_8u/(byte) 0 test_8u::@11/(byte) test_8u::i#1 ) - [258] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) - [259] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) - [260] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 - [261] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 - [262] call div8u - [263] (byte) div8u::return#3 ← (byte) div8u::return#0 + [259] (byte*) print_line_cursor#41 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*) print_line_cursor#1 ) + [259] (byte*) print_char_cursor#141 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*~) print_char_cursor#190 ) + [259] (byte) test_8u::i#10 ← phi( test_8u/(byte) 0 test_8u::@11/(byte) test_8u::i#1 ) + [260] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) + [261] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) + [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 + [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 + [264] call div8u + [265] (byte) div8u::return#3 ← (byte) div8u::return#0 to:test_8u::@2 test_8u::@2: scope:[test_8u] from test_8u::@1 - [264] (byte) test_8u::res#0 ← (byte) div8u::return#3 - [265] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - [266] call print_byte + [266] (byte) test_8u::res#0 ← (byte) div8u::return#3 + [267] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + [268] call print_byte to:test_8u::@3 test_8u::@3: scope:[test_8u] from test_8u::@2 - [267] phi() - [268] call print_str + [269] phi() + [270] call print_str to:test_8u::@4 test_8u::@4: scope:[test_8u] from test_8u::@3 - [269] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 - [270] call print_byte + [271] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 + [272] call print_byte to:test_8u::@5 test_8u::@5: scope:[test_8u] from test_8u::@4 - [271] phi() - [272] call print_str + [273] phi() + [274] call print_str to:test_8u::@6 test_8u::@6: scope:[test_8u] from test_8u::@5 - [273] (byte) print_byte::b#5 ← (byte) test_8u::res#0 - [274] call print_byte + [275] (byte) print_byte::b#5 ← (byte) test_8u::res#0 + [276] call print_byte to:test_8u::@7 test_8u::@7: scope:[test_8u] from test_8u::@6 - [275] phi() - [276] call print_str + [277] phi() + [278] call print_str to:test_8u::@8 test_8u::@8: scope:[test_8u] from test_8u::@7 - [277] (byte) print_byte::b#6 ← (byte) rem8u#17 - [278] call print_byte + [279] (byte) print_byte::b#6 ← (byte) rem8u#17 + [280] call print_byte to:test_8u::@9 test_8u::@9: scope:[test_8u] from test_8u::@8 - [279] phi() - [280] call print_ln + [281] phi() + [282] call print_ln to:test_8u::@10 test_8u::@10: scope:[test_8u] from test_8u::@9 - [281] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 - [282] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 + [283] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 + [284] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 to:test_8u::@return test_8u::@return: scope:[test_8u] from test_8u::@10 - [283] return + [285] return to:@return test_8u::@11: scope:[test_8u] from test_8u::@10 - [284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 + [286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 to:test_8u::@1 print_cls: scope:[print_cls] from main - [285] phi() + [287] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [286] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [287] *((byte*) print_cls::sc#2) ← (byte) ' ' - [288] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [288] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [289] *((byte*) print_cls::sc#2) ← (byte) ' ' + [290] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [290] return + [292] return to:@return diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log index 15de2bcf0..d9dc01f75 100644 --- a/src/test/ref/test-division.log +++ b/src/test/ref/test-division.log @@ -14,6 +14,7 @@ Culled Empty Block (label) print_str::@6 Culled Empty Block (label) @3 Culled Empty Block (label) @4 Culled Empty Block (label) @5 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @6 Culled Empty Block (label) print_sbyte::@4 Culled Empty Block (label) @7 @@ -65,37 +66,37 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@12 print_str: scope:[print_str] from test_16s::@4 test_16s::@6 test_16s::@8 test_16u::@4 test_16u::@6 test_16u::@8 test_8s::@4 test_8s::@6 test_8s::@8 test_8u::@4 test_8u::@6 test_8u::@8 - (byte*) print_char_cursor#143 ← phi( test_16s::@4/(byte*) print_char_cursor#55 test_16s::@6/(byte*) print_char_cursor#57 test_16s::@8/(byte*) print_char_cursor#59 test_16u::@4/(byte*) print_char_cursor#37 test_16u::@6/(byte*) print_char_cursor#39 test_16u::@8/(byte*) print_char_cursor#41 test_8s::@4/(byte*) print_char_cursor#46 test_8s::@6/(byte*) print_char_cursor#48 test_8s::@8/(byte*) print_char_cursor#50 test_8u::@4/(byte*) print_char_cursor#28 test_8u::@6/(byte*) print_char_cursor#30 test_8u::@8/(byte*) print_char_cursor#32 ) + (byte*) print_char_cursor#146 ← phi( test_16s::@4/(byte*) print_char_cursor#56 test_16s::@6/(byte*) print_char_cursor#58 test_16s::@8/(byte*) print_char_cursor#60 test_16u::@4/(byte*) print_char_cursor#38 test_16u::@6/(byte*) print_char_cursor#40 test_16u::@8/(byte*) print_char_cursor#42 test_8s::@4/(byte*) print_char_cursor#47 test_8s::@6/(byte*) print_char_cursor#49 test_8s::@8/(byte*) print_char_cursor#51 test_8u::@4/(byte*) print_char_cursor#29 test_8u::@6/(byte*) print_char_cursor#31 test_8u::@8/(byte*) print_char_cursor#33 ) (byte*) print_str::str#15 ← phi( test_16s::@4/(byte*) print_str::str#10 test_16s::@6/(byte*) print_str::str#11 test_16s::@8/(byte*) print_str::str#12 test_16u::@4/(byte*) print_str::str#4 test_16u::@6/(byte*) print_str::str#5 test_16u::@8/(byte*) print_str::str#6 test_8s::@4/(byte*) print_str::str#7 test_8s::@6/(byte*) print_str::str#8 test_8s::@8/(byte*) print_str::str#9 test_8u::@4/(byte*) print_str::str#1 test_8u::@6/(byte*) print_str::str#2 test_8u::@8/(byte*) print_str::str#3 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#143 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#146 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#13) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#65 ← phi( print_str::@1/(byte*) print_char_cursor#128 ) + (byte*) print_char_cursor#66 ← phi( print_str::@1/(byte*) print_char_cursor#130 ) (byte*) print_str::str#14 ← phi( print_str::@1/(byte*) print_str::str#13 ) - *((byte*) print_char_cursor#65) ← *((byte*) print_str::str#14) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#65 + *((byte*) print_char_cursor#66) ← *((byte*) print_str::str#14) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#66 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#14 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#66 ← phi( print_str::@1/(byte*) print_char_cursor#128 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#66 + (byte*) print_char_cursor#67 ← phi( print_str::@1/(byte*) print_char_cursor#130 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#67 return to:@return print_ln: scope:[print_ln] from test_16s::@10 test_16u::@10 test_8s::@10 test_8u::@10 - (byte*) print_char_cursor#129 ← phi( test_16s::@10/(byte*) print_char_cursor#61 test_16u::@10/(byte*) print_char_cursor#43 test_8s::@10/(byte*) print_char_cursor#52 test_8u::@10/(byte*) print_char_cursor#34 ) + (byte*) print_char_cursor#131 ← phi( test_16s::@10/(byte*) print_char_cursor#62 test_16u::@10/(byte*) print_char_cursor#44 test_8s::@10/(byte*) print_char_cursor#53 test_8u::@10/(byte*) print_char_cursor#35 ) (byte*) print_line_cursor#39 ← phi( test_16s::@10/(byte*) print_line_cursor#44 test_16u::@10/(byte*) print_line_cursor#42 test_8s::@10/(byte*) print_line_cursor#43 test_8u::@10/(byte*) print_line_cursor#41 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#67 ← phi( print_ln/(byte*) print_char_cursor#129 print_ln::@1/(byte*) print_char_cursor#67 ) + (byte*) print_char_cursor#68 ← phi( print_ln/(byte*) print_char_cursor#131 print_ln::@1/(byte*) print_char_cursor#68 ) (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#20 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#67 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#68 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -103,157 +104,167 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#21 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#68 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) + (byte*) print_char_cursor#69 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) (byte*) print_line_cursor#22 ← phi( print_ln::@2/(byte*) print_line_cursor#21 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#22 - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#68 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#69 return to:@return print_sword: scope:[print_sword] from test_16s::@3 test_16s::@5 test_16s::@7 test_16s::@9 - (byte*) print_char_cursor#144 ← phi( test_16s::@3/(byte*) print_char_cursor#141 test_16s::@5/(byte*) print_char_cursor#56 test_16s::@7/(byte*) print_char_cursor#58 test_16s::@9/(byte*) print_char_cursor#60 ) + (byte*) print_char_cursor#147 ← phi( test_16s::@3/(byte*) print_char_cursor#144 test_16s::@5/(byte*) print_char_cursor#57 test_16s::@7/(byte*) print_char_cursor#59 test_16s::@9/(byte*) print_char_cursor#61 ) (signed word) print_sword::w#5 ← phi( test_16s::@3/(signed word) print_sword::w#1 test_16s::@5/(signed word) print_sword::w#2 test_16s::@7/(signed word) print_sword::w#3 test_16s::@9/(signed word) print_sword::w#4 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#144 print_sword::@4/(byte*) print_char_cursor#6 ) - (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#6 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#69 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#69 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#131 ← phi( print_sword/(byte*) print_char_cursor#144 ) + (byte*) print_char_cursor#132 ← phi( print_sword/(byte*) print_char_cursor#147 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#7 ← phi( print_sword::@2/(signed word) print_sword::w#8 ) - (byte*) print_char_cursor#70 ← phi( print_sword::@2/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#70 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#7 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#6 ← phi( print_sword::@1/(signed word) print_sword::w#8 ) + (byte*) print_char_cursor#70 ← phi( print_sword::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#70 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#6 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#71 ← phi( print_sword::@3/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#71 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#10 ← phi( print_sword/(signed word) print_sword::w#5 ) + (byte*) print_char_cursor#133 ← phi( print_sword/(byte*) print_char_cursor#147 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#9 ← phi( print_sword::@3/(signed word) print_sword::w#10 ) + (byte*) print_char_cursor#71 ← phi( print_sword::@3/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#71 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#134 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) + (signed word) print_sword::w#7 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#9 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#7 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#72 ← phi( print_sword::@2/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#72 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#73 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#73 return to:@return print_sbyte: scope:[print_sbyte] from test_8s::@3 test_8s::@5 test_8s::@7 test_8s::@9 - (byte*) print_char_cursor#145 ← phi( test_8s::@3/(byte*) print_char_cursor#140 test_8s::@5/(byte*) print_char_cursor#47 test_8s::@7/(byte*) print_char_cursor#49 test_8s::@9/(byte*) print_char_cursor#51 ) + (byte*) print_char_cursor#148 ← phi( test_8s::@3/(byte*) print_char_cursor#143 test_8s::@5/(byte*) print_char_cursor#48 test_8s::@7/(byte*) print_char_cursor#50 test_8s::@9/(byte*) print_char_cursor#52 ) (signed byte) print_sbyte::b#5 ← phi( test_8s::@3/(signed byte) print_sbyte::b#1 test_8s::@5/(signed byte) print_sbyte::b#2 test_8s::@7/(signed byte) print_sbyte::b#3 test_8s::@9/(signed byte) print_sbyte::b#4 ) (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#5 < (number) 0 if((bool~) print_sbyte::$0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@1: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#8 ← phi( print_sbyte/(signed byte) print_sbyte::b#5 ) - (byte*) print_char_cursor#132 ← phi( print_sbyte/(byte*) print_char_cursor#145 ) - (byte) print_char::ch#1 ← (byte) '-' + (byte*) print_char_cursor#135 ← phi( print_sbyte/(byte*) print_char_cursor#148 ) + (byte) print_char::ch#2 ← (byte) '-' call print_char to:print_sbyte::@5 print_sbyte::@5: scope:[print_sbyte] from print_sbyte::@1 (signed byte) print_sbyte::b#6 ← phi( print_sbyte::@1/(signed byte) print_sbyte::b#8 ) - (byte*) print_char_cursor#72 ← phi( print_sbyte::@1/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#72 + (byte*) print_char_cursor#74 ← phi( print_sbyte::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#74 (signed byte~) print_sbyte::$5 ← - (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$5 to:print_sbyte::@2 print_sbyte::@3: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#10 ← phi( print_sbyte/(signed byte) print_sbyte::b#5 ) - (byte*) print_char_cursor#133 ← phi( print_sbyte/(byte*) print_char_cursor#145 ) - (byte) print_char::ch#2 ← (byte) ' ' + (byte*) print_char_cursor#136 ← phi( print_sbyte/(byte*) print_char_cursor#148 ) + (byte) print_char::ch#3 ← (byte) ' ' call print_char to:print_sbyte::@6 print_sbyte::@6: scope:[print_sbyte] from print_sbyte::@3 (signed byte) print_sbyte::b#9 ← phi( print_sbyte::@3/(signed byte) print_sbyte::b#10 ) - (byte*) print_char_cursor#73 ← phi( print_sbyte::@3/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#73 + (byte*) print_char_cursor#75 ← phi( print_sbyte::@3/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#75 to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@5 print_sbyte::@6 - (byte*) print_char_cursor#134 ← phi( print_sbyte::@5/(byte*) print_char_cursor#8 print_sbyte::@6/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#137 ← phi( print_sbyte::@5/(byte*) print_char_cursor#9 print_sbyte::@6/(byte*) print_char_cursor#10 ) (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@6/(signed byte) print_sbyte::b#9 ) (byte~) print_sbyte::$1 ← ((byte)) (signed byte) print_sbyte::b#7 (byte) print_byte::b#0 ← (byte~) print_sbyte::$1 call print_byte to:print_sbyte::@7 print_sbyte::@7: scope:[print_sbyte] from print_sbyte::@2 - (byte*) print_char_cursor#74 ← phi( print_sbyte::@2/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#74 + (byte*) print_char_cursor#76 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#76 to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@7 - (byte*) print_char_cursor#75 ← phi( print_sbyte::@7/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#75 + (byte*) print_char_cursor#77 ← phi( print_sbyte::@7/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#77 return to:@return -print_word: scope:[print_word] from print_sword::@1 test_16u::@3 test_16u::@5 test_16u::@7 test_16u::@9 - (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@3/(byte*) print_char_cursor#139 test_16u::@5/(byte*) print_char_cursor#38 test_16u::@7/(byte*) print_char_cursor#40 test_16u::@9/(byte*) print_char_cursor#42 ) - (word) print_word::w#5 ← phi( print_sword::@1/(word) print_word::w#0 test_16u::@3/(word) print_word::w#1 test_16u::@5/(word) print_word::w#2 test_16u::@7/(word) print_word::w#3 test_16u::@9/(word) print_word::w#4 ) +print_word: scope:[print_word] from print_sword::@2 test_16u::@3 test_16u::@5 test_16u::@7 test_16u::@9 + (byte*) print_char_cursor#138 ← phi( print_sword::@2/(byte*) print_char_cursor#134 test_16u::@3/(byte*) print_char_cursor#142 test_16u::@5/(byte*) print_char_cursor#39 test_16u::@7/(byte*) print_char_cursor#41 test_16u::@9/(byte*) print_char_cursor#43 ) + (word) print_word::w#5 ← phi( print_sword::@2/(word) print_word::w#0 test_16u::@3/(word) print_word::w#1 test_16u::@5/(word) print_word::w#2 test_16u::@7/(word) print_word::w#3 test_16u::@9/(word) print_word::w#4 ) (byte~) print_word::$0 ← > (word) print_word::w#5 (byte) print_byte::b#1 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#6 ← phi( print_word/(word) print_word::w#5 ) - (byte*) print_char_cursor#76 ← phi( print_word/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#76 + (byte*) print_char_cursor#78 ← phi( print_word/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#78 (byte~) print_word::$2 ← < (word) print_word::w#6 (byte) print_byte::b#2 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#77 ← phi( print_word::@1/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#77 + (byte*) print_char_cursor#79 ← phi( print_word::@1/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#79 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#78 ← phi( print_word::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#78 + (byte*) print_char_cursor#80 ← phi( print_word::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#80 return to:@return @12: scope:[] from @begin (byte*) print_screen#10 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#158 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#161 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#66 ← phi( @begin/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@19 print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@3 test_8u::@5 test_8u::@7 test_8u::@9 - (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#134 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#12 test_8u::@3/(byte*) print_char_cursor#138 test_8u::@5/(byte*) print_char_cursor#29 test_8u::@7/(byte*) print_char_cursor#31 test_8u::@9/(byte*) print_char_cursor#33 ) + (byte*) print_char_cursor#139 ← phi( print_sbyte::@2/(byte*) print_char_cursor#137 print_word/(byte*) print_char_cursor#138 print_word::@1/(byte*) print_char_cursor#13 test_8u::@3/(byte*) print_char_cursor#141 test_8u::@5/(byte*) print_char_cursor#30 test_8u::@7/(byte*) print_char_cursor#32 test_8u::@9/(byte*) print_char_cursor#34 ) (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@3/(byte) print_byte::b#3 test_8u::@5/(byte) print_byte::b#4 test_8u::@7/(byte) print_byte::b#5 test_8u::@9/(byte) print_byte::b#6 ) (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (number) 4 - (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#8 ← phi( print_byte/(byte) print_byte::b#7 ) - (byte*) print_char_cursor#79 ← phi( print_byte/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#79 + (byte*) print_char_cursor#81 ← phi( print_byte/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#81 (number~) print_byte::$2 ← (byte) print_byte::b#8 & (number) $f - (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#5 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#80 ← phi( print_byte::@1/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#80 + (byte*) print_char_cursor#82 ← phi( print_byte::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#82 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#81 ← phi( print_byte::@2/(byte*) print_char_cursor#16 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#81 + (byte*) print_char_cursor#83 ← phi( print_byte::@2/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#83 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#15 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#133 print_sword::@2/(byte*) print_char_cursor#131 ) - (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) print_char::ch#1 print_sbyte::@3/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 - (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#16 print_sbyte::@1/(byte*) print_char_cursor#135 print_sbyte::@3/(byte*) print_char_cursor#136 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#133 ) + (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) print_char::ch#2 print_sbyte::@3/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 + (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#84 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#83 ← phi( print_char/(byte*) print_char_cursor#18 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#83 + (byte*) print_char_cursor#85 ← phi( print_char/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#85 return to:@return print_cls: scope:[print_cls] from main @@ -272,18 +283,18 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#20 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#21 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#84 ← phi( print_cls::@2/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#86 ← phi( print_cls::@2/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#23 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#23 - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#84 + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#86 return to:@return @19: scope:[] from @12 (byte*) print_screen#9 ← phi( @12/(byte*) print_screen#10 ) - (byte*) print_char_cursor#157 ← phi( @12/(byte*) print_char_cursor#158 ) + (byte*) print_char_cursor#160 ← phi( @12/(byte*) print_char_cursor#161 ) (byte*) print_line_cursor#61 ← phi( @12/(byte*) print_line_cursor#66 ) (byte) rem8u#0 ← (number) 0 to:@21 @@ -390,7 +401,7 @@ divr8u::@return: scope:[divr8u] from divr8u::@6 @21: scope:[] from @19 (byte*) print_screen#8 ← phi( @19/(byte*) print_screen#9 ) (byte) rem8u#55 ← phi( @19/(byte) rem8u#0 ) - (byte*) print_char_cursor#156 ← phi( @19/(byte*) print_char_cursor#157 ) + (byte*) print_char_cursor#159 ← phi( @19/(byte*) print_char_cursor#160 ) (byte*) print_line_cursor#56 ← phi( @19/(byte*) print_line_cursor#61 ) (word) rem16u#0 ← (number) 0 to:@24 @@ -499,7 +510,7 @@ div16u::@return: scope:[div16u] from div16u::@2 (byte*) print_screen#7 ← phi( @21/(byte*) print_screen#8 ) (word) rem16u#55 ← phi( @21/(word) rem16u#0 ) (byte) rem8u#52 ← phi( @21/(byte) rem8u#55 ) - (byte*) print_char_cursor#151 ← phi( @21/(byte*) print_char_cursor#156 ) + (byte*) print_char_cursor#154 ← phi( @21/(byte*) print_char_cursor#159 ) (byte*) print_line_cursor#51 ← phi( @21/(byte*) print_line_cursor#56 ) (signed byte) rem8s#0 ← (number) 0 to:@25 @@ -609,7 +620,7 @@ div8s::@return: scope:[div8s] from div8s::@11 div8s::@5 (signed byte) rem8s#26 ← phi( @24/(signed byte) rem8s#0 ) (word) rem16u#54 ← phi( @24/(word) rem16u#55 ) (byte) rem8u#50 ← phi( @24/(byte) rem8u#52 ) - (byte*) print_char_cursor#150 ← phi( @24/(byte*) print_char_cursor#151 ) + (byte*) print_char_cursor#153 ← phi( @24/(byte*) print_char_cursor#154 ) (byte*) print_line_cursor#50 ← phi( @24/(byte*) print_line_cursor#51 ) (signed word) rem16s#0 ← (number) 0 to:@32 @@ -764,7 +775,7 @@ main: scope:[main] from @32 (signed byte) rem8s#29 ← phi( @32/(signed byte) rem8s#21 ) (word) rem16u#57 ← phi( @32/(word) rem16u#45 ) (byte) rem8u#44 ← phi( @32/(byte) rem8u#41 ) - (byte*) print_char_cursor#137 ← phi( @32/(byte*) print_char_cursor#142 ) + (byte*) print_char_cursor#140 ← phi( @32/(byte*) print_char_cursor#145 ) (byte*) print_line_cursor#40 ← phi( @32/(byte*) print_line_cursor#45 ) (byte*) print_screen#4 ← phi( @32/(byte*) print_screen#5 ) call print_cls @@ -774,10 +785,10 @@ main::@1: scope:[main] from main (signed byte) rem8s#27 ← phi( main/(signed byte) rem8s#29 ) (word) rem16u#48 ← phi( main/(word) rem16u#57 ) (byte) rem8u#33 ← phi( main/(byte) rem8u#44 ) - (byte*) print_char_cursor#85 ← phi( main/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#87 ← phi( main/(byte*) print_char_cursor#22 ) (byte*) print_line_cursor#24 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#24 - (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#85 + (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#87 call test_8u to:main::@2 main::@2: scope:[main] from main::@1 @@ -785,10 +796,10 @@ main::@2: scope:[main] from main::@1 (signed byte) rem8s#22 ← phi( main::@1/(signed byte) rem8s#27 ) (word) rem16u#38 ← phi( main::@1/(word) rem16u#48 ) (byte*) print_line_cursor#25 ← phi( main::@1/(byte*) print_line_cursor#12 ) - (byte*) print_char_cursor#86 ← phi( main::@1/(byte*) print_char_cursor#36 ) + (byte*) print_char_cursor#88 ← phi( main::@1/(byte*) print_char_cursor#37 ) (byte) rem8u#22 ← phi( main::@1/(byte) rem8u#11 ) (byte) rem8u#7 ← (byte) rem8u#22 - (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#86 + (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#88 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#25 call test_16u to:main::@3 @@ -797,10 +808,10 @@ main::@3: scope:[main] from main::@2 (signed byte) rem8s#16 ← phi( main::@2/(signed byte) rem8s#22 ) (byte) rem8u#34 ← phi( main::@2/(byte) rem8u#7 ) (byte*) print_line_cursor#26 ← phi( main::@2/(byte*) print_line_cursor#14 ) - (byte*) print_char_cursor#87 ← phi( main::@2/(byte*) print_char_cursor#45 ) + (byte*) print_char_cursor#89 ← phi( main::@2/(byte*) print_char_cursor#46 ) (word) rem16u#26 ← phi( main::@2/(word) rem16u#13 ) (word) rem16u#9 ← (word) rem16u#26 - (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#87 + (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#89 (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#26 call test_8s to:main::@4 @@ -808,12 +819,12 @@ main::@4: scope:[main] from main::@3 (signed word) rem16s#21 ← phi( main::@3/(signed word) rem16s#26 ) (word) rem16u#39 ← phi( main::@3/(word) rem16u#9 ) (byte*) print_line_cursor#27 ← phi( main::@3/(byte*) print_line_cursor#16 ) - (byte*) print_char_cursor#88 ← phi( main::@3/(byte*) print_char_cursor#54 ) + (byte*) print_char_cursor#90 ← phi( main::@3/(byte*) print_char_cursor#55 ) (signed byte) rem8s#10 ← phi( main::@3/(signed byte) rem8s#7 ) (byte) rem8u#23 ← phi( main::@3/(byte) rem8u#13 ) (byte) rem8u#8 ← (byte) rem8u#23 (signed byte) rem8s#4 ← (signed byte) rem8s#10 - (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#88 + (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#90 (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#27 call test_16s to:main::@5 @@ -821,12 +832,12 @@ main::@5: scope:[main] from main::@4 (signed byte) rem8s#17 ← phi( main::@4/(signed byte) rem8s#4 ) (byte) rem8u#35 ← phi( main::@4/(byte) rem8u#8 ) (byte*) print_line_cursor#28 ← phi( main::@4/(byte*) print_line_cursor#18 ) - (byte*) print_char_cursor#89 ← phi( main::@4/(byte*) print_char_cursor#63 ) + (byte*) print_char_cursor#91 ← phi( main::@4/(byte*) print_char_cursor#64 ) (signed word) rem16s#14 ← phi( main::@4/(signed word) rem16s#9 ) (word) rem16u#27 ← phi( main::@4/(word) rem16u#15 ) (word) rem16u#10 ← (word) rem16u#27 (signed word) rem16s#6 ← (signed word) rem16s#14 - (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#89 + (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#91 (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#28 to:main::@return main::@return: scope:[main] from main::@5 @@ -834,10 +845,10 @@ main::@return: scope:[main] from main::@5 (signed byte) rem8s#11 ← phi( main::@5/(signed byte) rem8s#17 ) (word) rem16u#28 ← phi( main::@5/(word) rem16u#10 ) (byte) rem8u#24 ← phi( main::@5/(byte) rem8u#35 ) - (byte*) print_char_cursor#90 ← phi( main::@5/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#92 ← phi( main::@5/(byte*) print_char_cursor#27 ) (byte*) print_line_cursor#29 ← phi( main::@5/(byte*) print_line_cursor#9 ) (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#29 - (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#90 + (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#92 (byte) rem8u#9 ← (byte) rem8u#24 (word) rem16u#11 ← (word) rem16u#28 (signed byte) rem8s#5 ← (signed byte) rem8s#11 @@ -846,7 +857,7 @@ main::@return: scope:[main] from main::@5 to:@return test_8u: scope:[test_8u] from main::@1 (byte*) print_line_cursor#83 ← phi( main::@1/(byte*) print_line_cursor#5 ) - (byte*) print_char_cursor#152 ← phi( main::@1/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#155 ← phi( main::@1/(byte*) print_char_cursor#23 ) (byte) rem8u#45 ← phi( main::@1/(byte) rem8u#33 ) (byte[]) test_8u::dividends#0 ← { (number) $ff, (number) $ff, (number) $ff, (number) $ff, (number) $ff, (number) $ff } (byte[]) test_8u::divisors#0 ← { (number) 5, (number) 7, (number) $b, (number) $d, (number) $11, (number) $13 } @@ -854,7 +865,7 @@ test_8u: scope:[test_8u] from main::@1 to:test_8u::@1 test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 (byte*) print_line_cursor#79 ← phi( test_8u/(byte*) print_line_cursor#83 test_8u::@11/(byte*) print_line_cursor#11 ) - (byte*) print_char_cursor#146 ← phi( test_8u/(byte*) print_char_cursor#152 test_8u::@11/(byte*) print_char_cursor#35 ) + (byte*) print_char_cursor#149 ← phi( test_8u/(byte*) print_char_cursor#155 test_8u::@11/(byte*) print_char_cursor#36 ) (byte) rem8u#36 ← phi( test_8u/(byte) rem8u#45 test_8u::@11/(byte) rem8u#38 ) (byte) test_8u::i#2 ← phi( test_8u/(byte) test_8u::i#0 test_8u::@11/(byte) test_8u::i#1 ) (byte) test_8u::dividend#0 ← *((byte[]) test_8u::dividends#0 + (byte) test_8u::i#2) @@ -868,7 +879,7 @@ test_8u::@3: scope:[test_8u] from test_8u::@1 (byte) test_8u::i#11 ← phi( test_8u::@1/(byte) test_8u::i#2 ) (byte*) print_line_cursor#75 ← phi( test_8u::@1/(byte*) print_line_cursor#79 ) (byte) test_8u::divisor#3 ← phi( test_8u::@1/(byte) test_8u::divisor#0 ) - (byte*) print_char_cursor#138 ← phi( test_8u::@1/(byte*) print_char_cursor#146 ) + (byte*) print_char_cursor#141 ← phi( test_8u::@1/(byte*) print_char_cursor#149 ) (byte) test_8u::dividend#1 ← phi( test_8u::@1/(byte) test_8u::dividend#0 ) (byte) rem8u#25 ← phi( test_8u::@1/(byte) rem8u#2 ) (byte) div8u::return#6 ← phi( test_8u::@1/(byte) div8u::return#3 ) @@ -884,8 +895,8 @@ test_8u::@4: scope:[test_8u] from test_8u::@3 (byte) rem8u#61 ← phi( test_8u::@3/(byte) rem8u#10 ) (byte) test_8u::res#4 ← phi( test_8u::@3/(byte) test_8u::res#0 ) (byte) test_8u::divisor#2 ← phi( test_8u::@3/(byte) test_8u::divisor#3 ) - (byte*) print_char_cursor#91 ← phi( test_8u::@3/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#91 + (byte*) print_char_cursor#93 ← phi( test_8u::@3/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#93 (byte*) print_str::str#1 ← (const string) test_8u::str call print_str to:test_8u::@5 @@ -895,8 +906,8 @@ test_8u::@5: scope:[test_8u] from test_8u::@4 (byte) rem8u#58 ← phi( test_8u::@4/(byte) rem8u#61 ) (byte) test_8u::res#3 ← phi( test_8u::@4/(byte) test_8u::res#4 ) (byte) test_8u::divisor#1 ← phi( test_8u::@4/(byte) test_8u::divisor#2 ) - (byte*) print_char_cursor#92 ← phi( test_8u::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#92 + (byte*) print_char_cursor#94 ← phi( test_8u::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#94 (byte) print_byte::b#4 ← (byte) test_8u::divisor#1 call print_byte to:test_8u::@6 @@ -905,8 +916,8 @@ test_8u::@6: scope:[test_8u] from test_8u::@5 (byte*) print_line_cursor#62 ← phi( test_8u::@5/(byte*) print_line_cursor#67 ) (byte) rem8u#53 ← phi( test_8u::@5/(byte) rem8u#58 ) (byte) test_8u::res#2 ← phi( test_8u::@5/(byte) test_8u::res#3 ) - (byte*) print_char_cursor#93 ← phi( test_8u::@5/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#93 + (byte*) print_char_cursor#95 ← phi( test_8u::@5/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#95 (byte*) print_str::str#2 ← (const string) test_8u::str1 call print_str to:test_8u::@7 @@ -915,8 +926,8 @@ test_8u::@7: scope:[test_8u] from test_8u::@6 (byte*) print_line_cursor#57 ← phi( test_8u::@6/(byte*) print_line_cursor#62 ) (byte) rem8u#46 ← phi( test_8u::@6/(byte) rem8u#53 ) (byte) test_8u::res#1 ← phi( test_8u::@6/(byte) test_8u::res#2 ) - (byte*) print_char_cursor#94 ← phi( test_8u::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#94 + (byte*) print_char_cursor#96 ← phi( test_8u::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#96 (byte) print_byte::b#5 ← (byte) test_8u::res#1 call print_byte to:test_8u::@8 @@ -924,8 +935,8 @@ test_8u::@8: scope:[test_8u] from test_8u::@7 (byte) test_8u::i#6 ← phi( test_8u::@7/(byte) test_8u::i#7 ) (byte*) print_line_cursor#52 ← phi( test_8u::@7/(byte*) print_line_cursor#57 ) (byte) rem8u#37 ← phi( test_8u::@7/(byte) rem8u#46 ) - (byte*) print_char_cursor#95 ← phi( test_8u::@7/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#95 + (byte*) print_char_cursor#97 ← phi( test_8u::@7/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#97 (byte*) print_str::str#3 ← (const string) test_8u::str2 call print_str to:test_8u::@9 @@ -933,8 +944,8 @@ test_8u::@9: scope:[test_8u] from test_8u::@8 (byte) test_8u::i#5 ← phi( test_8u::@8/(byte) test_8u::i#6 ) (byte*) print_line_cursor#46 ← phi( test_8u::@8/(byte*) print_line_cursor#52 ) (byte) rem8u#26 ← phi( test_8u::@8/(byte) rem8u#37 ) - (byte*) print_char_cursor#96 ← phi( test_8u::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#96 + (byte*) print_char_cursor#98 ← phi( test_8u::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#98 (byte) print_byte::b#6 ← (byte) rem8u#26 call print_byte to:test_8u::@10 @@ -942,33 +953,33 @@ test_8u::@10: scope:[test_8u] from test_8u::@9 (byte) rem8u#47 ← phi( test_8u::@9/(byte) rem8u#26 ) (byte) test_8u::i#4 ← phi( test_8u::@9/(byte) test_8u::i#5 ) (byte*) print_line_cursor#41 ← phi( test_8u::@9/(byte*) print_line_cursor#46 ) - (byte*) print_char_cursor#97 ← phi( test_8u::@9/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#97 + (byte*) print_char_cursor#99 ← phi( test_8u::@9/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#99 call print_ln to:test_8u::@11 test_8u::@11: scope:[test_8u] from test_8u::@10 (byte) rem8u#38 ← phi( test_8u::@10/(byte) rem8u#47 ) (byte) test_8u::i#3 ← phi( test_8u::@10/(byte) test_8u::i#4 ) - (byte*) print_char_cursor#98 ← phi( test_8u::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#100 ← phi( test_8u::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#30 ← phi( test_8u::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#30 - (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#98 + (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#100 (byte) test_8u::i#1 ← (byte) test_8u::i#3 + rangenext(0,5) (bool~) test_8u::$9 ← (byte) test_8u::i#1 != rangelast(0,5) if((bool~) test_8u::$9) goto test_8u::@1 to:test_8u::@return test_8u::@return: scope:[test_8u] from test_8u::@11 (byte*) print_line_cursor#31 ← phi( test_8u::@11/(byte*) print_line_cursor#11 ) - (byte*) print_char_cursor#99 ← phi( test_8u::@11/(byte*) print_char_cursor#35 ) + (byte*) print_char_cursor#101 ← phi( test_8u::@11/(byte*) print_char_cursor#36 ) (byte) rem8u#27 ← phi( test_8u::@11/(byte) rem8u#38 ) (byte) rem8u#11 ← (byte) rem8u#27 - (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#99 + (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#101 (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#31 return to:@return test_16u: scope:[test_16u] from main::@2 (byte*) print_line_cursor#84 ← phi( main::@2/(byte*) print_line_cursor#6 ) - (byte*) print_char_cursor#153 ← phi( main::@2/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#156 ← phi( main::@2/(byte*) print_char_cursor#24 ) (word) rem16u#49 ← phi( main::@2/(word) rem16u#38 ) (word[]) test_16u::dividends#0 ← { (number) $ffff, (number) $ffff, (number) $ffff, (number) $ffff, (number) $ffff, (number) $ffff } (word[]) test_16u::divisors#0 ← { (number) 5, (number) 7, (number) $b, (number) $d, (number) $11, (number) $13 } @@ -976,7 +987,7 @@ test_16u: scope:[test_16u] from main::@2 to:test_16u::@1 test_16u::@1: scope:[test_16u] from test_16u test_16u::@11 (byte*) print_line_cursor#80 ← phi( test_16u/(byte*) print_line_cursor#84 test_16u::@11/(byte*) print_line_cursor#13 ) - (byte*) print_char_cursor#147 ← phi( test_16u/(byte*) print_char_cursor#153 test_16u::@11/(byte*) print_char_cursor#44 ) + (byte*) print_char_cursor#150 ← phi( test_16u/(byte*) print_char_cursor#156 test_16u::@11/(byte*) print_char_cursor#45 ) (word) rem16u#40 ← phi( test_16u/(word) rem16u#49 test_16u::@11/(word) rem16u#42 ) (byte) test_16u::i#2 ← phi( test_16u/(byte) test_16u::i#0 test_16u::@11/(byte) test_16u::i#1 ) (byte~) test_16u::$10 ← (byte) test_16u::i#2 * (const byte) SIZEOF_WORD @@ -992,7 +1003,7 @@ test_16u::@3: scope:[test_16u] from test_16u::@1 (byte) test_16u::i#11 ← phi( test_16u::@1/(byte) test_16u::i#2 ) (byte*) print_line_cursor#76 ← phi( test_16u::@1/(byte*) print_line_cursor#80 ) (word) test_16u::divisor#3 ← phi( test_16u::@1/(word) test_16u::divisor#0 ) - (byte*) print_char_cursor#139 ← phi( test_16u::@1/(byte*) print_char_cursor#147 ) + (byte*) print_char_cursor#142 ← phi( test_16u::@1/(byte*) print_char_cursor#150 ) (word) test_16u::dividend#1 ← phi( test_16u::@1/(word) test_16u::dividend#0 ) (word) rem16u#29 ← phi( test_16u::@1/(word) rem16u#4 ) (word) div16u::return#4 ← phi( test_16u::@1/(word) div16u::return#2 ) @@ -1008,8 +1019,8 @@ test_16u::@4: scope:[test_16u] from test_16u::@3 (word) rem16u#65 ← phi( test_16u::@3/(word) rem16u#12 ) (word) test_16u::res#4 ← phi( test_16u::@3/(word) test_16u::res#0 ) (word) test_16u::divisor#2 ← phi( test_16u::@3/(word) test_16u::divisor#3 ) - (byte*) print_char_cursor#100 ← phi( test_16u::@3/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#100 + (byte*) print_char_cursor#102 ← phi( test_16u::@3/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#102 (byte*) print_str::str#4 ← (const string) test_16u::str call print_str to:test_16u::@5 @@ -1019,8 +1030,8 @@ test_16u::@5: scope:[test_16u] from test_16u::@4 (word) rem16u#62 ← phi( test_16u::@4/(word) rem16u#65 ) (word) test_16u::res#3 ← phi( test_16u::@4/(word) test_16u::res#4 ) (word) test_16u::divisor#1 ← phi( test_16u::@4/(word) test_16u::divisor#2 ) - (byte*) print_char_cursor#101 ← phi( test_16u::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#101 + (byte*) print_char_cursor#103 ← phi( test_16u::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#103 (word) print_word::w#2 ← (word) test_16u::divisor#1 call print_word to:test_16u::@6 @@ -1029,8 +1040,8 @@ test_16u::@6: scope:[test_16u] from test_16u::@5 (byte*) print_line_cursor#63 ← phi( test_16u::@5/(byte*) print_line_cursor#68 ) (word) rem16u#58 ← phi( test_16u::@5/(word) rem16u#62 ) (word) test_16u::res#2 ← phi( test_16u::@5/(word) test_16u::res#3 ) - (byte*) print_char_cursor#102 ← phi( test_16u::@5/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#102 + (byte*) print_char_cursor#104 ← phi( test_16u::@5/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#104 (byte*) print_str::str#5 ← (const string) test_16u::str1 call print_str to:test_16u::@7 @@ -1039,8 +1050,8 @@ test_16u::@7: scope:[test_16u] from test_16u::@6 (byte*) print_line_cursor#58 ← phi( test_16u::@6/(byte*) print_line_cursor#63 ) (word) rem16u#50 ← phi( test_16u::@6/(word) rem16u#58 ) (word) test_16u::res#1 ← phi( test_16u::@6/(word) test_16u::res#2 ) - (byte*) print_char_cursor#103 ← phi( test_16u::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#103 + (byte*) print_char_cursor#105 ← phi( test_16u::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#105 (word) print_word::w#3 ← (word) test_16u::res#1 call print_word to:test_16u::@8 @@ -1048,8 +1059,8 @@ test_16u::@8: scope:[test_16u] from test_16u::@7 (byte) test_16u::i#6 ← phi( test_16u::@7/(byte) test_16u::i#7 ) (byte*) print_line_cursor#53 ← phi( test_16u::@7/(byte*) print_line_cursor#58 ) (word) rem16u#41 ← phi( test_16u::@7/(word) rem16u#50 ) - (byte*) print_char_cursor#104 ← phi( test_16u::@7/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#104 + (byte*) print_char_cursor#106 ← phi( test_16u::@7/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#106 (byte*) print_str::str#6 ← (const string) test_16u::str2 call print_str to:test_16u::@9 @@ -1057,8 +1068,8 @@ test_16u::@9: scope:[test_16u] from test_16u::@8 (byte) test_16u::i#5 ← phi( test_16u::@8/(byte) test_16u::i#6 ) (byte*) print_line_cursor#47 ← phi( test_16u::@8/(byte*) print_line_cursor#53 ) (word) rem16u#30 ← phi( test_16u::@8/(word) rem16u#41 ) - (byte*) print_char_cursor#105 ← phi( test_16u::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#105 + (byte*) print_char_cursor#107 ← phi( test_16u::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#107 (word) print_word::w#4 ← (word) rem16u#30 call print_word to:test_16u::@10 @@ -1066,33 +1077,33 @@ test_16u::@10: scope:[test_16u] from test_16u::@9 (word) rem16u#51 ← phi( test_16u::@9/(word) rem16u#30 ) (byte) test_16u::i#4 ← phi( test_16u::@9/(byte) test_16u::i#5 ) (byte*) print_line_cursor#42 ← phi( test_16u::@9/(byte*) print_line_cursor#47 ) - (byte*) print_char_cursor#106 ← phi( test_16u::@9/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#106 + (byte*) print_char_cursor#108 ← phi( test_16u::@9/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#108 call print_ln to:test_16u::@11 test_16u::@11: scope:[test_16u] from test_16u::@10 (word) rem16u#42 ← phi( test_16u::@10/(word) rem16u#51 ) (byte) test_16u::i#3 ← phi( test_16u::@10/(byte) test_16u::i#4 ) - (byte*) print_char_cursor#107 ← phi( test_16u::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#109 ← phi( test_16u::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#32 ← phi( test_16u::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#32 - (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#107 + (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#109 (byte) test_16u::i#1 ← (byte) test_16u::i#3 + rangenext(0,5) (bool~) test_16u::$9 ← (byte) test_16u::i#1 != rangelast(0,5) if((bool~) test_16u::$9) goto test_16u::@1 to:test_16u::@return test_16u::@return: scope:[test_16u] from test_16u::@11 (byte*) print_line_cursor#33 ← phi( test_16u::@11/(byte*) print_line_cursor#13 ) - (byte*) print_char_cursor#108 ← phi( test_16u::@11/(byte*) print_char_cursor#44 ) + (byte*) print_char_cursor#110 ← phi( test_16u::@11/(byte*) print_char_cursor#45 ) (word) rem16u#31 ← phi( test_16u::@11/(word) rem16u#42 ) (word) rem16u#13 ← (word) rem16u#31 - (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#108 + (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#110 (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#33 return to:@return test_8s: scope:[test_8s] from main::@3 (byte*) print_line_cursor#85 ← phi( main::@3/(byte*) print_line_cursor#7 ) - (byte*) print_char_cursor#154 ← phi( main::@3/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#157 ← phi( main::@3/(byte*) print_char_cursor#25 ) (signed byte) rem8s#23 ← phi( main::@3/(signed byte) rem8s#16 ) (byte) rem8u#48 ← phi( main::@3/(byte) rem8u#34 ) (signed byte[]) test_8s::dividends#0 ← { (number) $7f, (number) -$7f, (number) -$7f, (number) $7f, (number) $7f, (number) $7f } @@ -1101,7 +1112,7 @@ test_8s: scope:[test_8s] from main::@3 to:test_8s::@1 test_8s::@1: scope:[test_8s] from test_8s test_8s::@11 (byte*) print_line_cursor#81 ← phi( test_8s/(byte*) print_line_cursor#85 test_8s::@11/(byte*) print_line_cursor#15 ) - (byte*) print_char_cursor#148 ← phi( test_8s/(byte*) print_char_cursor#154 test_8s::@11/(byte*) print_char_cursor#53 ) + (byte*) print_char_cursor#151 ← phi( test_8s/(byte*) print_char_cursor#157 test_8s::@11/(byte*) print_char_cursor#54 ) (signed byte) rem8s#18 ← phi( test_8s/(signed byte) rem8s#23 test_8s::@11/(signed byte) rem8s#20 ) (byte) rem8u#39 ← phi( test_8s/(byte) rem8u#48 test_8s::@11/(byte) rem8u#40 ) (byte) test_8s::i#2 ← phi( test_8s/(byte) test_8s::i#0 test_8s::@11/(byte) test_8s::i#1 ) @@ -1116,7 +1127,7 @@ test_8s::@3: scope:[test_8s] from test_8s::@1 (byte) test_8s::i#11 ← phi( test_8s::@1/(byte) test_8s::i#2 ) (byte*) print_line_cursor#77 ← phi( test_8s::@1/(byte*) print_line_cursor#81 ) (signed byte) test_8s::divisor#3 ← phi( test_8s::@1/(signed byte) test_8s::divisor#0 ) - (byte*) print_char_cursor#140 ← phi( test_8s::@1/(byte*) print_char_cursor#148 ) + (byte*) print_char_cursor#143 ← phi( test_8s::@1/(byte*) print_char_cursor#151 ) (signed byte) test_8s::dividend#1 ← phi( test_8s::@1/(signed byte) test_8s::dividend#0 ) (signed byte) rem8s#12 ← phi( test_8s::@1/(signed byte) rem8s#3 ) (byte) rem8u#28 ← phi( test_8s::@1/(byte) rem8u#6 ) @@ -1135,8 +1146,8 @@ test_8s::@4: scope:[test_8s] from test_8s::@3 (signed byte) rem8s#31 ← phi( test_8s::@3/(signed byte) rem8s#6 ) (signed byte) test_8s::res#4 ← phi( test_8s::@3/(signed byte) test_8s::res#0 ) (signed byte) test_8s::divisor#2 ← phi( test_8s::@3/(signed byte) test_8s::divisor#3 ) - (byte*) print_char_cursor#109 ← phi( test_8s::@3/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#109 + (byte*) print_char_cursor#111 ← phi( test_8s::@3/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#111 (byte*) print_str::str#7 ← (const string) test_8s::str call print_str to:test_8s::@5 @@ -1147,8 +1158,8 @@ test_8s::@5: scope:[test_8s] from test_8s::@4 (signed byte) rem8s#30 ← phi( test_8s::@4/(signed byte) rem8s#31 ) (signed byte) test_8s::res#3 ← phi( test_8s::@4/(signed byte) test_8s::res#4 ) (signed byte) test_8s::divisor#1 ← phi( test_8s::@4/(signed byte) test_8s::divisor#2 ) - (byte*) print_char_cursor#110 ← phi( test_8s::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#110 + (byte*) print_char_cursor#112 ← phi( test_8s::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#112 (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#1 call print_sbyte to:test_8s::@6 @@ -1158,8 +1169,8 @@ test_8s::@6: scope:[test_8s] from test_8s::@5 (byte*) print_line_cursor#64 ← phi( test_8s::@5/(byte*) print_line_cursor#69 ) (signed byte) rem8s#28 ← phi( test_8s::@5/(signed byte) rem8s#30 ) (signed byte) test_8s::res#2 ← phi( test_8s::@5/(signed byte) test_8s::res#3 ) - (byte*) print_char_cursor#111 ← phi( test_8s::@5/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#111 + (byte*) print_char_cursor#113 ← phi( test_8s::@5/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#113 (byte*) print_str::str#8 ← (const string) test_8s::str1 call print_str to:test_8s::@7 @@ -1169,8 +1180,8 @@ test_8s::@7: scope:[test_8s] from test_8s::@6 (byte*) print_line_cursor#59 ← phi( test_8s::@6/(byte*) print_line_cursor#64 ) (signed byte) rem8s#24 ← phi( test_8s::@6/(signed byte) rem8s#28 ) (signed byte) test_8s::res#1 ← phi( test_8s::@6/(signed byte) test_8s::res#2 ) - (byte*) print_char_cursor#112 ← phi( test_8s::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#112 + (byte*) print_char_cursor#114 ← phi( test_8s::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#114 (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#1 call print_sbyte to:test_8s::@8 @@ -1179,8 +1190,8 @@ test_8s::@8: scope:[test_8s] from test_8s::@7 (byte) test_8s::i#6 ← phi( test_8s::@7/(byte) test_8s::i#7 ) (byte*) print_line_cursor#54 ← phi( test_8s::@7/(byte*) print_line_cursor#59 ) (signed byte) rem8s#19 ← phi( test_8s::@7/(signed byte) rem8s#24 ) - (byte*) print_char_cursor#113 ← phi( test_8s::@7/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#113 + (byte*) print_char_cursor#115 ← phi( test_8s::@7/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#115 (byte*) print_str::str#9 ← (const string) test_8s::str2 call print_str to:test_8s::@9 @@ -1189,8 +1200,8 @@ test_8s::@9: scope:[test_8s] from test_8s::@8 (byte) test_8s::i#5 ← phi( test_8s::@8/(byte) test_8s::i#6 ) (byte*) print_line_cursor#48 ← phi( test_8s::@8/(byte*) print_line_cursor#54 ) (signed byte) rem8s#13 ← phi( test_8s::@8/(signed byte) rem8s#19 ) - (byte*) print_char_cursor#114 ← phi( test_8s::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#114 + (byte*) print_char_cursor#116 ← phi( test_8s::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#116 (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#13 call print_sbyte to:test_8s::@10 @@ -1199,36 +1210,36 @@ test_8s::@10: scope:[test_8s] from test_8s::@9 (byte) rem8u#49 ← phi( test_8s::@9/(byte) rem8u#54 ) (byte) test_8s::i#4 ← phi( test_8s::@9/(byte) test_8s::i#5 ) (byte*) print_line_cursor#43 ← phi( test_8s::@9/(byte*) print_line_cursor#48 ) - (byte*) print_char_cursor#115 ← phi( test_8s::@9/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#115 + (byte*) print_char_cursor#117 ← phi( test_8s::@9/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#117 call print_ln to:test_8s::@11 test_8s::@11: scope:[test_8s] from test_8s::@10 (signed byte) rem8s#20 ← phi( test_8s::@10/(signed byte) rem8s#25 ) (byte) rem8u#40 ← phi( test_8s::@10/(byte) rem8u#49 ) (byte) test_8s::i#3 ← phi( test_8s::@10/(byte) test_8s::i#4 ) - (byte*) print_char_cursor#116 ← phi( test_8s::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#118 ← phi( test_8s::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#34 ← phi( test_8s::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#34 - (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#116 + (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#118 (byte) test_8s::i#1 ← (byte) test_8s::i#3 + rangenext(0,5) (bool~) test_8s::$9 ← (byte) test_8s::i#1 != rangelast(0,5) if((bool~) test_8s::$9) goto test_8s::@1 to:test_8s::@return test_8s::@return: scope:[test_8s] from test_8s::@11 (byte*) print_line_cursor#35 ← phi( test_8s::@11/(byte*) print_line_cursor#15 ) - (byte*) print_char_cursor#117 ← phi( test_8s::@11/(byte*) print_char_cursor#53 ) + (byte*) print_char_cursor#119 ← phi( test_8s::@11/(byte*) print_char_cursor#54 ) (signed byte) rem8s#14 ← phi( test_8s::@11/(signed byte) rem8s#20 ) (byte) rem8u#29 ← phi( test_8s::@11/(byte) rem8u#40 ) (byte) rem8u#13 ← (byte) rem8u#29 (signed byte) rem8s#7 ← (signed byte) rem8s#14 - (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#117 + (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#119 (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#35 return to:@return test_16s: scope:[test_16s] from main::@4 (byte*) print_line_cursor#86 ← phi( main::@4/(byte*) print_line_cursor#8 ) - (byte*) print_char_cursor#155 ← phi( main::@4/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#158 ← phi( main::@4/(byte*) print_char_cursor#26 ) (signed word) rem16s#27 ← phi( main::@4/(signed word) rem16s#21 ) (word) rem16u#52 ← phi( main::@4/(word) rem16u#39 ) (signed word[]) test_16s::dividends#0 ← { (number) $7fff, (number) $7fff, (number) -$7fff, (number) -$7fff, (number) $7fff, (number) -$7fff } @@ -1237,7 +1248,7 @@ test_16s: scope:[test_16s] from main::@4 to:test_16s::@1 test_16s::@1: scope:[test_16s] from test_16s test_16s::@11 (byte*) print_line_cursor#82 ← phi( test_16s/(byte*) print_line_cursor#86 test_16s::@11/(byte*) print_line_cursor#17 ) - (byte*) print_char_cursor#149 ← phi( test_16s/(byte*) print_char_cursor#155 test_16s::@11/(byte*) print_char_cursor#62 ) + (byte*) print_char_cursor#152 ← phi( test_16s/(byte*) print_char_cursor#158 test_16s::@11/(byte*) print_char_cursor#63 ) (signed word) rem16s#22 ← phi( test_16s/(signed word) rem16s#27 test_16s::@11/(signed word) rem16s#24 ) (word) rem16u#43 ← phi( test_16s/(word) rem16u#52 test_16s::@11/(word) rem16u#44 ) (byte) test_16s::i#2 ← phi( test_16s/(byte) test_16s::i#0 test_16s::@11/(byte) test_16s::i#1 ) @@ -1254,7 +1265,7 @@ test_16s::@3: scope:[test_16s] from test_16s::@1 (byte) test_16s::i#11 ← phi( test_16s::@1/(byte) test_16s::i#2 ) (byte*) print_line_cursor#78 ← phi( test_16s::@1/(byte*) print_line_cursor#82 ) (signed word) test_16s::divisor#3 ← phi( test_16s::@1/(signed word) test_16s::divisor#0 ) - (byte*) print_char_cursor#141 ← phi( test_16s::@1/(byte*) print_char_cursor#149 ) + (byte*) print_char_cursor#144 ← phi( test_16s::@1/(byte*) print_char_cursor#152 ) (signed word) test_16s::dividend#1 ← phi( test_16s::@1/(signed word) test_16s::dividend#0 ) (signed word) rem16s#16 ← phi( test_16s::@1/(signed word) rem16s#5 ) (word) rem16u#32 ← phi( test_16s::@1/(word) rem16u#8 ) @@ -1273,8 +1284,8 @@ test_16s::@4: scope:[test_16s] from test_16s::@3 (signed word) rem16s#35 ← phi( test_16s::@3/(signed word) rem16s#8 ) (signed word) test_16s::res#4 ← phi( test_16s::@3/(signed word) test_16s::res#0 ) (signed word) test_16s::divisor#2 ← phi( test_16s::@3/(signed word) test_16s::divisor#3 ) - (byte*) print_char_cursor#118 ← phi( test_16s::@3/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#118 + (byte*) print_char_cursor#120 ← phi( test_16s::@3/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#120 (byte*) print_str::str#10 ← (const string) test_16s::str call print_str to:test_16s::@5 @@ -1285,8 +1296,8 @@ test_16s::@5: scope:[test_16s] from test_16s::@4 (signed word) rem16s#33 ← phi( test_16s::@4/(signed word) rem16s#35 ) (signed word) test_16s::res#3 ← phi( test_16s::@4/(signed word) test_16s::res#4 ) (signed word) test_16s::divisor#1 ← phi( test_16s::@4/(signed word) test_16s::divisor#2 ) - (byte*) print_char_cursor#119 ← phi( test_16s::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#119 + (byte*) print_char_cursor#121 ← phi( test_16s::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#121 (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#1 call print_sword to:test_16s::@6 @@ -1296,8 +1307,8 @@ test_16s::@6: scope:[test_16s] from test_16s::@5 (byte*) print_line_cursor#65 ← phi( test_16s::@5/(byte*) print_line_cursor#70 ) (signed word) rem16s#31 ← phi( test_16s::@5/(signed word) rem16s#33 ) (signed word) test_16s::res#2 ← phi( test_16s::@5/(signed word) test_16s::res#3 ) - (byte*) print_char_cursor#120 ← phi( test_16s::@5/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#120 + (byte*) print_char_cursor#122 ← phi( test_16s::@5/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#122 (byte*) print_str::str#11 ← (const string) test_16s::str1 call print_str to:test_16s::@7 @@ -1307,8 +1318,8 @@ test_16s::@7: scope:[test_16s] from test_16s::@6 (byte*) print_line_cursor#60 ← phi( test_16s::@6/(byte*) print_line_cursor#65 ) (signed word) rem16s#28 ← phi( test_16s::@6/(signed word) rem16s#31 ) (signed word) test_16s::res#1 ← phi( test_16s::@6/(signed word) test_16s::res#2 ) - (byte*) print_char_cursor#121 ← phi( test_16s::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#121 + (byte*) print_char_cursor#123 ← phi( test_16s::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#123 (signed word) print_sword::w#3 ← (signed word) test_16s::res#1 call print_sword to:test_16s::@8 @@ -1317,8 +1328,8 @@ test_16s::@8: scope:[test_16s] from test_16s::@7 (byte) test_16s::i#6 ← phi( test_16s::@7/(byte) test_16s::i#7 ) (byte*) print_line_cursor#55 ← phi( test_16s::@7/(byte*) print_line_cursor#60 ) (signed word) rem16s#23 ← phi( test_16s::@7/(signed word) rem16s#28 ) - (byte*) print_char_cursor#122 ← phi( test_16s::@7/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#122 + (byte*) print_char_cursor#124 ← phi( test_16s::@7/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#124 (byte*) print_str::str#12 ← (const string) test_16s::str2 call print_str to:test_16s::@9 @@ -1327,8 +1338,8 @@ test_16s::@9: scope:[test_16s] from test_16s::@8 (byte) test_16s::i#5 ← phi( test_16s::@8/(byte) test_16s::i#6 ) (byte*) print_line_cursor#49 ← phi( test_16s::@8/(byte*) print_line_cursor#55 ) (signed word) rem16s#17 ← phi( test_16s::@8/(signed word) rem16s#23 ) - (byte*) print_char_cursor#123 ← phi( test_16s::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#123 + (byte*) print_char_cursor#125 ← phi( test_16s::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#125 (signed word) print_sword::w#4 ← (signed word) rem16s#17 call print_sword to:test_16s::@10 @@ -1337,30 +1348,30 @@ test_16s::@10: scope:[test_16s] from test_16s::@9 (word) rem16u#53 ← phi( test_16s::@9/(word) rem16u#59 ) (byte) test_16s::i#4 ← phi( test_16s::@9/(byte) test_16s::i#5 ) (byte*) print_line_cursor#44 ← phi( test_16s::@9/(byte*) print_line_cursor#49 ) - (byte*) print_char_cursor#124 ← phi( test_16s::@9/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#124 + (byte*) print_char_cursor#126 ← phi( test_16s::@9/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#126 call print_ln to:test_16s::@11 test_16s::@11: scope:[test_16s] from test_16s::@10 (signed word) rem16s#24 ← phi( test_16s::@10/(signed word) rem16s#29 ) (word) rem16u#44 ← phi( test_16s::@10/(word) rem16u#53 ) (byte) test_16s::i#3 ← phi( test_16s::@10/(byte) test_16s::i#4 ) - (byte*) print_char_cursor#125 ← phi( test_16s::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#127 ← phi( test_16s::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#36 ← phi( test_16s::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#36 - (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#125 + (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#127 (byte) test_16s::i#1 ← (byte) test_16s::i#3 + rangenext(0,5) (bool~) test_16s::$9 ← (byte) test_16s::i#1 != rangelast(0,5) if((bool~) test_16s::$9) goto test_16s::@1 to:test_16s::@return test_16s::@return: scope:[test_16s] from test_16s::@11 (byte*) print_line_cursor#37 ← phi( test_16s::@11/(byte*) print_line_cursor#17 ) - (byte*) print_char_cursor#126 ← phi( test_16s::@11/(byte*) print_char_cursor#62 ) + (byte*) print_char_cursor#128 ← phi( test_16s::@11/(byte*) print_char_cursor#63 ) (signed word) rem16s#18 ← phi( test_16s::@11/(signed word) rem16s#24 ) (word) rem16u#33 ← phi( test_16s::@11/(word) rem16u#44 ) (word) rem16u#15 ← (word) rem16u#33 (signed word) rem16s#9 ← (signed word) rem16s#18 - (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#126 + (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#128 (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#37 return to:@return @@ -1370,7 +1381,7 @@ test_16s::@return: scope:[test_16s] from test_16s::@11 (signed byte) rem8s#21 ← phi( @25/(signed byte) rem8s#26 ) (word) rem16u#45 ← phi( @25/(word) rem16u#54 ) (byte) rem8u#41 ← phi( @25/(byte) rem8u#50 ) - (byte*) print_char_cursor#142 ← phi( @25/(byte*) print_char_cursor#150 ) + (byte*) print_char_cursor#145 ← phi( @25/(byte*) print_char_cursor#153 ) (byte*) print_line_cursor#45 ← phi( @25/(byte*) print_line_cursor#50 ) call main to:@33 @@ -1379,10 +1390,10 @@ test_16s::@return: scope:[test_16s] from test_16s::@11 (signed byte) rem8s#15 ← phi( @32/(signed byte) rem8s#5 ) (word) rem16u#34 ← phi( @32/(word) rem16u#11 ) (byte) rem8u#30 ← phi( @32/(byte) rem8u#9 ) - (byte*) print_char_cursor#127 ← phi( @32/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#129 ← phi( @32/(byte*) print_char_cursor#28 ) (byte*) print_line_cursor#38 ← phi( @32/(byte*) print_line_cursor#10 ) (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#38 - (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#127 + (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#129 (byte) rem8u#14 ← (byte) rem8u#30 (word) rem16u#16 ← (word) rem16u#34 (signed byte) rem8s#8 ← (signed byte) rem8s#15 @@ -1805,6 +1816,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#3 (byte) print_char::ch#4 (byte) print_char::ch#5 +(byte) print_char::ch#6 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -1873,7 +1885,10 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#156 (byte*) print_char_cursor#157 (byte*) print_char_cursor#158 +(byte*) print_char_cursor#159 (byte*) print_char_cursor#16 +(byte*) print_char_cursor#160 +(byte*) print_char_cursor#161 (byte*) print_char_cursor#17 (byte*) print_char_cursor#18 (byte*) print_char_cursor#19 @@ -2130,17 +2145,19 @@ SYMBOL TABLE SSA (byte*) print_str::str#9 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 (signed word) print_sword::w#1 +(signed word) print_sword::w#10 (signed word) print_sword::w#2 (signed word) print_sword::w#3 (signed word) print_sword::w#4 @@ -2148,6 +2165,7 @@ SYMBOL TABLE SSA (signed word) print_sword::w#6 (signed word) print_sword::w#7 (signed word) print_sword::w#8 +(signed word) print_sword::w#9 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -2630,7 +2648,7 @@ Adding number conversion cast (signed word) to elements in (signed word[]) test_ Adding number conversion cast (signed word) to elements in (signed word[]) test_16s::divisors#0 ← { (signed word)(number) 5, (signed word)(number) -7, (signed word)(number) $b, (signed word)(number) -$d, (signed word)(number) -$11, (signed word)(number) $13 } Successful SSA optimization PassNAddArrayNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#6 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#7 Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#7 Inlining cast (byte) rem8u#0 ← (unumber)(number) 0 Inlining cast (byte) divr8u::rem#0 ← (unumber)(number) 0 @@ -2817,39 +2835,39 @@ Inferred type updated to byte in (unumber~) divr16u::$2 ← (byte~) divr16u::$1 Inferred type updated to word in (unumber~) divr16u::$5 ← (word) divr16u::rem#7 | (byte) 1 Inferred type updated to byte in (unumber~) div8s::$10 ← (byte) div8s::neg#3 ^ (byte) 1 Inferred type updated to byte in (unumber~) divr16s::$15 ← (byte) divr16s::neg#3 ^ (byte) 1 -Inversing boolean not [28] (bool~) print_sword::$1 ← (signed word) print_sword::w#5 >= (signed byte) 0 from [27] (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (signed byte) 0 -Inversing boolean not [145] (bool~) divr8u::$3 ← (byte~) divr8u::$1 == (byte) 0 from [144] (bool~) divr8u::$2 ← (byte~) divr8u::$1 != (byte) 0 -Inversing boolean not [153] (bool~) divr8u::$8 ← (byte) divr8u::rem#5 < (byte) divr8u::divisor#1 from [152] (bool~) divr8u::$7 ← (byte) divr8u::rem#5 >= (byte) divr8u::divisor#1 -Inversing boolean not [184] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte) 0 from [183] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte) 0 -Inversing boolean not [192] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [191] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2 +Inversing boolean not [149] (bool~) divr8u::$3 ← (byte~) divr8u::$1 == (byte) 0 from [148] (bool~) divr8u::$2 ← (byte~) divr8u::$1 != (byte) 0 +Inversing boolean not [157] (bool~) divr8u::$8 ← (byte) divr8u::rem#5 < (byte) divr8u::divisor#1 from [156] (bool~) divr8u::$7 ← (byte) divr8u::rem#5 >= (byte) divr8u::divisor#1 +Inversing boolean not [188] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte) 0 from [187] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte) 0 +Inversing boolean not [196] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [195] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#66 (byte*) print_char_cursor#158 (byte*) print_screen#10 (byte*) print_line_cursor#61 (byte*) print_char_cursor#157 (byte*) print_screen#9 (byte*) print_line_cursor#56 (byte*) print_char_cursor#156 (byte*) print_screen#8 (byte*) print_line_cursor#51 (byte*) print_char_cursor#151 (byte*) print_screen#7 (byte*) print_line_cursor#50 (byte*) print_char_cursor#150 (byte*) print_screen#6 (byte*) print_line_cursor#45 (byte*) print_char_cursor#142 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#66 (byte*) print_char_cursor#161 (byte*) print_screen#10 (byte*) print_line_cursor#61 (byte*) print_char_cursor#160 (byte*) print_screen#9 (byte*) print_line_cursor#56 (byte*) print_char_cursor#159 (byte*) print_screen#8 (byte*) print_line_cursor#51 (byte*) print_char_cursor#154 (byte*) print_screen#7 (byte*) print_line_cursor#50 (byte*) print_char_cursor#153 (byte*) print_screen#6 (byte*) print_line_cursor#45 (byte*) print_char_cursor#145 (byte*) print_screen#5 Alias (byte*) print_str::str#13 = (byte*) print_str::str#14 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#66 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#68 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#69 (byte*) print_char_cursor#71 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#144 -Alias (signed word) print_sword::w#5 = (signed word) print_sword::w#8 (signed word) print_sword::w#7 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#70 +Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#66 (byte*) print_char_cursor#67 (byte*) print_char_cursor#2 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#69 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#147 (byte*) print_char_cursor#133 +Alias (signed word) print_sword::w#10 = (signed word) print_sword::w#8 (signed word) print_sword::w#5 (signed word) print_sword::w#6 (signed word) print_sword::w#9 +Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#70 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#145 (byte*) print_char_cursor#133 +Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#71 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#73 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#148 (byte*) print_char_cursor#136 Alias (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#8 (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#9 -Alias (byte*) print_char_cursor#72 = (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#9 Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#73 = (byte*) print_char_cursor#9 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#75 Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#74 (byte*) print_char_cursor#75 (byte*) print_char_cursor#11 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#12 Alias (byte) print_byte::b#1 = (byte~) print_word::$0 Alias (word) print_word::w#5 = (word) print_word::w#6 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#76 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#78 Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#77 (byte*) print_char_cursor#78 (byte*) print_char_cursor#14 +Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#15 Alias (byte) print_byte::b#7 = (byte) print_byte::b#8 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#79 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#80 (byte*) print_char_cursor#81 (byte*) print_char_cursor#17 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#83 (byte*) print_char_cursor#19 -Alias (byte*) print_line_cursor#23 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#20 (byte*) print_char_cursor#84 (byte*) print_line_cursor#4 (byte*) print_char_cursor#21 +Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#81 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#18 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#20 +Alias (byte*) print_line_cursor#23 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#21 (byte*) print_char_cursor#86 (byte*) print_line_cursor#4 (byte*) print_char_cursor#22 Alias (byte) divr8u::return#0 = (byte) divr8u::return#3 Alias (byte) rem8u#1 = (byte) rem8u#15 (byte) rem8u#16 (byte) rem8u#2 Alias (byte) div8u::return#0 = (byte~) div8u::$0 (byte) div8u::return#4 (byte) div8u::return#1 @@ -2950,94 +2968,94 @@ Alias (word) rem16u#38 = (word) rem16u#48 (word) rem16u#57 Alias (signed byte) rem8s#16 = (signed byte) rem8s#27 (signed byte) rem8s#29 (signed byte) rem8s#22 Alias (signed word) rem16s#21 = (signed word) rem16s#32 (signed word) rem16s#34 (signed word) rem16s#30 (signed word) rem16s#26 Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#85 +Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#87 Alias (byte) rem8u#22 = (byte) rem8u#7 (byte) rem8u#34 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#86 +Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#88 Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#6 Alias (word) rem16u#26 = (word) rem16u#9 (word) rem16u#39 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#87 +Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#89 Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#7 Alias (byte) rem8u#23 = (byte) rem8u#8 (byte) rem8u#35 (byte) rem8u#24 (byte) rem8u#9 Alias (signed byte) rem8s#10 = (signed byte) rem8s#4 (signed byte) rem8s#17 (signed byte) rem8s#11 (signed byte) rem8s#5 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#88 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#90 Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#8 Alias (word) rem16u#10 = (word) rem16u#27 (word) rem16u#28 (word) rem16u#11 Alias (signed word) rem16s#14 = (signed word) rem16s#6 (signed word) rem16s#15 (signed word) rem16s#7 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#27 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#91 (byte*) print_char_cursor#92 (byte*) print_char_cursor#28 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 Alias (byte) div8u::return#3 = (byte) div8u::return#6 Alias (byte) test_8u::dividend#0 = (byte) test_8u::dividend#1 -Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#146 +Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#149 Alias (byte) test_8u::divisor#0 = (byte) test_8u::divisor#3 (byte) test_8u::divisor#2 (byte) test_8u::divisor#1 Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#75 (byte*) print_line_cursor#79 (byte*) print_line_cursor#71 (byte*) print_line_cursor#67 (byte*) print_line_cursor#62 (byte*) print_line_cursor#57 (byte*) print_line_cursor#52 (byte*) print_line_cursor#46 Alias (byte) test_8u::i#10 = (byte) test_8u::i#11 (byte) test_8u::i#2 (byte) test_8u::i#9 (byte) test_8u::i#8 (byte) test_8u::i#7 (byte) test_8u::i#6 (byte) test_8u::i#5 (byte) test_8u::i#4 (byte) test_8u::i#3 Alias (byte) rem8u#10 = (byte) rem8u#25 (byte) rem8u#61 (byte) rem8u#58 (byte) rem8u#53 (byte) rem8u#46 (byte) rem8u#37 (byte) rem8u#26 (byte) rem8u#47 (byte) rem8u#38 (byte) rem8u#27 (byte) rem8u#11 Alias (byte) test_8u::res#0 = (byte~) test_8u::$0 (byte) test_8u::res#4 (byte) test_8u::res#3 (byte) test_8u::res#2 (byte) test_8u::res#1 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#91 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#92 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#93 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#94 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#95 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#96 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#97 +Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#93 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#94 +Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#95 +Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#96 +Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#97 +Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#98 +Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#99 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31 (byte*) print_line_cursor#12 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#98 (byte*) print_char_cursor#99 (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#101 (byte*) print_char_cursor#37 Alias (word) div16u::return#2 = (word) div16u::return#4 Alias (word) test_16u::dividend#0 = (word) test_16u::dividend#1 -Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#147 +Alias (byte*) print_char_cursor#142 = (byte*) print_char_cursor#150 Alias (word) test_16u::divisor#0 = (word) test_16u::divisor#3 (word) test_16u::divisor#2 (word) test_16u::divisor#1 Alias (byte*) print_line_cursor#42 = (byte*) print_line_cursor#76 (byte*) print_line_cursor#80 (byte*) print_line_cursor#72 (byte*) print_line_cursor#68 (byte*) print_line_cursor#63 (byte*) print_line_cursor#58 (byte*) print_line_cursor#53 (byte*) print_line_cursor#47 Alias (byte) test_16u::i#10 = (byte) test_16u::i#11 (byte) test_16u::i#2 (byte) test_16u::i#9 (byte) test_16u::i#8 (byte) test_16u::i#7 (byte) test_16u::i#6 (byte) test_16u::i#5 (byte) test_16u::i#4 (byte) test_16u::i#3 Alias (word) rem16u#12 = (word) rem16u#29 (word) rem16u#65 (word) rem16u#62 (word) rem16u#58 (word) rem16u#50 (word) rem16u#41 (word) rem16u#30 (word) rem16u#51 (word) rem16u#42 (word) rem16u#31 (word) rem16u#13 Alias (word) test_16u::res#0 = (word~) test_16u::$0 (word) test_16u::res#4 (word) test_16u::res#3 (word) test_16u::res#2 (word) test_16u::res#1 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#37 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#41 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#43 +Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#38 +Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#40 +Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#41 +Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#42 +Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#43 +Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#44 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#33 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#44 (byte*) print_char_cursor#108 (byte*) print_char_cursor#45 +Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#110 (byte*) print_char_cursor#46 Alias (signed byte) div8s::return#3 = (signed byte) div8s::return#5 Alias (signed byte) test_8s::dividend#0 = (signed byte) test_8s::dividend#1 -Alias (byte*) print_char_cursor#140 = (byte*) print_char_cursor#148 +Alias (byte*) print_char_cursor#143 = (byte*) print_char_cursor#151 Alias (signed byte) test_8s::divisor#0 = (signed byte) test_8s::divisor#3 (signed byte) test_8s::divisor#2 (signed byte) test_8s::divisor#1 Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#77 (byte*) print_line_cursor#81 (byte*) print_line_cursor#73 (byte*) print_line_cursor#69 (byte*) print_line_cursor#64 (byte*) print_line_cursor#59 (byte*) print_line_cursor#54 (byte*) print_line_cursor#48 Alias (byte) test_8s::i#10 = (byte) test_8s::i#11 (byte) test_8s::i#2 (byte) test_8s::i#9 (byte) test_8s::i#8 (byte) test_8s::i#7 (byte) test_8s::i#6 (byte) test_8s::i#5 (byte) test_8s::i#4 (byte) test_8s::i#3 Alias (byte) rem8u#12 = (byte) rem8u#28 (byte) rem8u#65 (byte) rem8u#64 (byte) rem8u#63 (byte) rem8u#62 (byte) rem8u#59 (byte) rem8u#54 (byte) rem8u#49 (byte) rem8u#40 (byte) rem8u#29 (byte) rem8u#13 Alias (signed byte) rem8s#12 = (signed byte) rem8s#6 (signed byte) rem8s#31 (signed byte) rem8s#30 (signed byte) rem8s#28 (signed byte) rem8s#24 (signed byte) rem8s#19 (signed byte) rem8s#13 (signed byte) rem8s#25 (signed byte) rem8s#20 (signed byte) rem8s#14 (signed byte) rem8s#7 Alias (signed byte) test_8s::res#0 = (signed byte~) test_8s::$0 (signed byte) test_8s::res#4 (signed byte) test_8s::res#3 (signed byte) test_8s::res#2 (signed byte) test_8s::res#1 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#46 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#49 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#52 +Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#47 +Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#48 +Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#49 +Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#50 +Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#51 +Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#52 +Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#53 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#117 (byte*) print_char_cursor#54 +Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#54 (byte*) print_char_cursor#119 (byte*) print_char_cursor#55 Alias (signed word) div16s::return#2 = (signed word) div16s::return#4 Alias (signed word) test_16s::dividend#0 = (signed word) test_16s::dividend#1 -Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#149 +Alias (byte*) print_char_cursor#144 = (byte*) print_char_cursor#152 Alias (signed word) test_16s::divisor#0 = (signed word) test_16s::divisor#3 (signed word) test_16s::divisor#2 (signed word) test_16s::divisor#1 Alias (byte*) print_line_cursor#44 = (byte*) print_line_cursor#78 (byte*) print_line_cursor#82 (byte*) print_line_cursor#74 (byte*) print_line_cursor#70 (byte*) print_line_cursor#65 (byte*) print_line_cursor#60 (byte*) print_line_cursor#55 (byte*) print_line_cursor#49 Alias (byte) test_16s::i#10 = (byte) test_16s::i#11 (byte) test_16s::i#2 (byte) test_16s::i#9 (byte) test_16s::i#8 (byte) test_16s::i#7 (byte) test_16s::i#6 (byte) test_16s::i#5 (byte) test_16s::i#4 (byte) test_16s::i#3 Alias (word) rem16u#14 = (word) rem16u#32 (word) rem16u#69 (word) rem16u#68 (word) rem16u#67 (word) rem16u#66 (word) rem16u#63 (word) rem16u#59 (word) rem16u#53 (word) rem16u#44 (word) rem16u#33 (word) rem16u#15 Alias (signed word) rem16s#16 = (signed word) rem16s#8 (signed word) rem16s#35 (signed word) rem16s#33 (signed word) rem16s#31 (signed word) rem16s#28 (signed word) rem16s#23 (signed word) rem16s#17 (signed word) rem16s#29 (signed word) rem16s#24 (signed word) rem16s#18 (signed word) rem16s#9 Alias (signed word) test_16s::res#0 = (signed word~) test_16s::$0 (signed word) test_16s::res#4 (signed word) test_16s::res#3 (signed word) test_16s::res#2 (signed word) test_16s::res#1 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#58 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#61 +Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#56 +Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#57 +Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#58 +Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#59 +Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#60 +Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#61 +Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#62 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#18 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#62 (byte*) print_char_cursor#126 (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#63 (byte*) print_char_cursor#128 (byte*) print_char_cursor#64 Alias (signed word) rem16s#0 = (signed word) rem16s#25 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#38 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#64 +Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#65 Alias (byte) rem8u#14 = (byte) rem8u#30 Alias (word) rem16u#16 = (word) rem16u#34 Alias (signed byte) rem8s#15 = (signed byte) rem8s#8 @@ -3063,21 +3081,22 @@ Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4 Alias (word) divr16s::remu#3 = (word) divr16s::remu#4 Alias (word) rem16u#20 = (word) rem16u#23 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#67 +Self Phi Eliminated (byte*) print_char_cursor#68 Self Phi Eliminated (byte*) print_line_cursor#23 Self Phi Eliminated (byte) divr8u::divisor#1 Self Phi Eliminated (word) divr16u::divisor#2 Successful SSA optimization Pass2SelfPhiElimination -Identical Phi Values (byte*) print_char_cursor#67 (byte*) print_char_cursor#129 -Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#72 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#73 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#68 (byte*) print_char_cursor#131 +Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#74 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#19 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#23 (byte*) print_screen#1 Identical Phi Values (byte) rem8u#1 (byte) rem8u#17 @@ -3107,141 +3126,143 @@ Identical Phi Values (word) rem16u#24 (word) rem16u#20 Identical Phi Values (signed word) rem16s#12 (signed word) rem16s#11 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#40 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#137 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#140 (byte*) print_line_cursor#0 Identical Phi Values (byte) rem8u#33 (byte) rem8u#0 Identical Phi Values (word) rem16u#38 (word) rem16u#0 Identical Phi Values (signed byte) rem8s#16 (signed byte) rem8s#0 Identical Phi Values (signed word) rem16s#21 (signed word) rem16s#0 Identical Phi Values (byte*) print_line_cursor#24 (byte*) print_line_cursor#23 -Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_line_cursor#23 +Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_line_cursor#23 Identical Phi Values (byte) rem8u#22 (byte) rem8u#10 -Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#35 +Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#100 Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_line_cursor#11 Identical Phi Values (word) rem16u#26 (word) rem16u#12 -Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#107 +Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#109 Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#13 Identical Phi Values (byte) rem8u#23 (byte) rem8u#12 Identical Phi Values (signed byte) rem8s#10 (signed byte) rem8s#12 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#116 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#118 Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#15 Identical Phi Values (word) rem16u#10 (word) rem16u#14 Identical Phi Values (signed word) rem16s#14 (signed word) rem16s#16 -Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#125 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#127 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#17 Identical Phi Values (byte) rem8u#45 (byte) rem8u#33 -Identical Phi Values (byte*) print_char_cursor#152 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#155 (byte*) print_char_cursor#23 Identical Phi Values (byte*) print_line_cursor#83 (byte*) print_line_cursor#24 Identical Phi Values (byte) rem8u#10 (byte) rem8u#1 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#16 +Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_char_cursor#17 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_line_cursor#1 Identical Phi Values (word) rem16u#49 (word) rem16u#38 -Identical Phi Values (byte*) print_char_cursor#153 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#156 (byte*) print_char_cursor#24 Identical Phi Values (byte*) print_line_cursor#84 (byte*) print_line_cursor#25 Identical Phi Values (word) rem16u#12 (word) rem16u#18 -Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#14 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_line_cursor#1 Identical Phi Values (byte) rem8u#48 (byte) rem8u#22 Identical Phi Values (signed byte) rem8s#23 (signed byte) rem8s#16 -Identical Phi Values (byte*) print_char_cursor#154 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#157 (byte*) print_char_cursor#25 Identical Phi Values (byte*) print_line_cursor#85 (byte*) print_line_cursor#26 Identical Phi Values (byte) rem8u#12 (byte) rem8u#18 Identical Phi Values (signed byte) rem8s#12 (signed byte) rem8s#3 -Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#10 +Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#11 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_line_cursor#1 Identical Phi Values (word) rem16u#52 (word) rem16u#26 Identical Phi Values (signed word) rem16s#27 (signed word) rem16s#21 -Identical Phi Values (byte*) print_char_cursor#155 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#158 (byte*) print_char_cursor#26 Identical Phi Values (byte*) print_line_cursor#86 (byte*) print_line_cursor#27 Identical Phi Values (word) rem16u#14 (word) rem16u#24 Identical Phi Values (signed word) rem16s#16 (signed word) rem16s#12 -Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#5 +Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#7 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#10 -Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#27 Identical Phi Values (byte) rem8u#14 (byte) rem8u#23 Identical Phi Values (word) rem16u#16 (word) rem16u#10 Identical Phi Values (signed byte) rem8s#15 (signed byte) rem8s#10 Identical Phi Values (signed word) rem16s#10 (signed word) rem16s#14 Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#134 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#139 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#134 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#137 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#142 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#42 (byte*) print_line_cursor#1 Identical Phi Values (byte) rem8u#39 (byte) rem8u#17 -Identical Phi Values (byte*) print_char_cursor#140 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#43 (byte*) print_line_cursor#1 Identical Phi Values (word) rem16u#43 (word) rem16u#1 -Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#44 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [460] (byte~) test_16u::$11 ← (byte) test_16u::i#10 * (const byte) SIZEOF_WORD -Identified duplicate assignment right side [574] (byte~) test_16s::$11 ← (byte) test_16s::i#10 * (const byte) SIZEOF_SIGNED_WORD +Identified duplicate assignment right side [464] (byte~) test_16u::$11 ← (byte) test_16u::i#10 * (const byte) SIZEOF_WORD +Identified duplicate assignment right side [578] (byte~) test_16s::$11 ← (byte) test_16s::i#10 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [29] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_sbyte::$0 [48] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 -Simple Condition (bool~) print_cls::$1 [113] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) divr8u::$3 [146] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 -Simple Condition (bool~) divr8u::$8 [154] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -Simple Condition (bool~) divr8u::$10 [161] if((byte) divr8u::i#1!=rangelast(0,7)) goto divr8u::@1 -Simple Condition (bool~) divr16u::$4 [185] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -Simple Condition (bool~) divr16u::$9 [193] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -Simple Condition (bool~) divr16u::$11 [200] if((byte) divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 -Simple Condition (bool~) div8s::$0 [232] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -Simple Condition (bool~) div8s::$1 [244] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -Simple Condition (bool~) div8s::$3 [264] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 -Simple Condition (bool~) divr16s::$3 [308] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -Simple Condition (bool~) divr16s::$5 [329] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -Simple Condition (bool~) test_8u::$9 [447] if((byte) test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 -Simple Condition (bool~) test_16u::$9 [504] if((byte) test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 -Simple Condition (bool~) test_8s::$9 [560] if((byte) test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 -Simple Condition (bool~) test_16s::$9 [619] if((byte) test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 +Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [28] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_sbyte::$0 [52] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 +Simple Condition (bool~) print_cls::$1 [117] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) divr8u::$3 [150] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 +Simple Condition (bool~) divr8u::$8 [158] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 +Simple Condition (bool~) divr8u::$10 [165] if((byte) divr8u::i#1!=rangelast(0,7)) goto divr8u::@1 +Simple Condition (bool~) divr16u::$4 [189] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 +Simple Condition (bool~) divr16u::$9 [197] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 +Simple Condition (bool~) divr16u::$11 [204] if((byte) divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 +Simple Condition (bool~) div8s::$0 [236] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 +Simple Condition (bool~) div8s::$1 [248] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 +Simple Condition (bool~) div8s::$3 [268] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 +Simple Condition (bool~) divr16s::$3 [312] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 +Simple Condition (bool~) divr16s::$5 [333] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 +Simple Condition (bool~) test_8u::$9 [451] if((byte) test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 +Simple Condition (bool~) test_16u::$9 [508] if((byte) test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 +Simple Condition (bool~) test_8s::$9 [564] if((byte) test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 +Simple Condition (bool~) test_16s::$9 [623] if((byte) test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting || if()-condition to two if()s [290] (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1 +Rewriting || if()-condition to two if()s [294] (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1 Successful SSA optimization Pass2ConditionalAndOrRewriting -Constant right-side identified [399] (byte[]) test_8u::dividends#0 ← { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff } -Constant right-side identified [400] (byte[]) test_8u::divisors#0 ← { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 } -Constant right-side identified [454] (word[]) test_16u::dividends#0 ← { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff } -Constant right-side identified [455] (word[]) test_16u::divisors#0 ← { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 } -Constant right-side identified [511] (signed byte[]) test_8s::dividends#0 ← { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f } -Constant right-side identified [512] (signed byte[]) test_8s::divisors#0 ← { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 } -Constant right-side identified [568] (signed word[]) test_16s::dividends#0 ← { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff } -Constant right-side identified [569] (signed word[]) test_16s::divisors#0 ← { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 } +Constant right-side identified [403] (byte[]) test_8u::dividends#0 ← { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff } +Constant right-side identified [404] (byte[]) test_8u::divisors#0 ← { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 } +Constant right-side identified [458] (word[]) test_16u::dividends#0 ← { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff } +Constant right-side identified [459] (word[]) test_16u::divisors#0 ← { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 } +Constant right-side identified [515] (signed byte[]) test_8s::dividends#0 ← { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f } +Constant right-side identified [516] (signed byte[]) test_8s::divisors#0 ← { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 } +Constant right-side identified [572] (signed word[]) test_16s::dividends#0 ← { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff } +Constant right-side identified [573] (signed word[]) test_16s::divisors#0 ← { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const byte) print_char::ch#1 = '-' -Constant (const byte) print_char::ch#2 = ' ' +Constant (const byte) print_char::ch#1 = ' ' +Constant (const byte) print_char::ch#2 = '-' +Constant (const byte) print_char::ch#3 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const byte) rem8u#0 = 0 Constant (const byte) divr8u::rem#0 = 0 @@ -3290,22 +3311,22 @@ Constant (const byte*) print_str::str#12 = test_16s::str2 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Successful SSA optimization Pass2ConstantIdentification -Constant value identified (word)divr16s::rem#0 in [303] (word) divr16s::remu#2 ← (word)(const signed word) divr16s::rem#0 +Constant value identified (word)divr16s::rem#0 in [307] (word) divr16s::remu#2 ← (word)(const signed word) divr16s::rem#0 Successful SSA optimization Pass2ConstantValues Successful SSA optimization Pass2ConstantStringConsolidation -Resolved ranged next value [159] divr8u::i#1 ← ++ divr8u::i#2 to ++ -Resolved ranged comparison value [161] if(divr8u::i#1!=rangelast(0,7)) goto divr8u::@1 to (number) 8 -Resolved ranged next value [198] divr16u::i#1 ← ++ divr16u::i#2 to ++ -Resolved ranged comparison value [200] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 -Resolved ranged next value [445] test_8u::i#1 ← ++ test_8u::i#10 to ++ -Resolved ranged comparison value [447] if(test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 to (number) 6 -Resolved ranged next value [502] test_16u::i#1 ← ++ test_16u::i#10 to ++ -Resolved ranged comparison value [504] if(test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 to (number) 6 -Resolved ranged next value [558] test_8s::i#1 ← ++ test_8s::i#10 to ++ -Resolved ranged comparison value [560] if(test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 to (number) 6 -Resolved ranged next value [617] test_16s::i#1 ← ++ test_16s::i#10 to ++ -Resolved ranged comparison value [619] if(test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 to (number) 6 -Simplifying constant evaluating to zero (word)(const signed word) divr16s::rem#0 in [303] (word) divr16s::remu#2 ← (word)(const signed word) divr16s::rem#0 +Resolved ranged next value [163] divr8u::i#1 ← ++ divr8u::i#2 to ++ +Resolved ranged comparison value [165] if(divr8u::i#1!=rangelast(0,7)) goto divr8u::@1 to (number) 8 +Resolved ranged next value [202] divr16u::i#1 ← ++ divr16u::i#2 to ++ +Resolved ranged comparison value [204] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 +Resolved ranged next value [449] test_8u::i#1 ← ++ test_8u::i#10 to ++ +Resolved ranged comparison value [451] if(test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 to (number) 6 +Resolved ranged next value [506] test_16u::i#1 ← ++ test_16u::i#10 to ++ +Resolved ranged comparison value [508] if(test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 to (number) 6 +Resolved ranged next value [562] test_8s::i#1 ← ++ test_8s::i#10 to ++ +Resolved ranged comparison value [564] if(test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 to (number) 6 +Resolved ranged next value [621] test_16s::i#1 ← ++ test_16s::i#10 to ++ +Resolved ranged comparison value [623] if(test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 to (number) 6 +Simplifying constant evaluating to zero (word)(const signed word) divr16s::rem#0 in [307] (word) divr16s::remu#2 ← (word)(const signed word) divr16s::rem#0 Successful SSA optimization PassNSimplifyConstantZero Eliminating unused variable - keeping the phi block (byte) rem8u#31 Eliminating unused variable - keeping the phi block (word) rem16u#40 @@ -3348,46 +3369,46 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Alias (byte~) test_16u::$11 = (byte~) test_16u::$10 Alias (byte~) test_16s::$11 = (byte~) test_16s::$10 Successful SSA optimization Pass2AliasElimination -Simple Condition (bool~) divr16s::$0 [127] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 -Simple Condition (bool~) divr16s::$1 [265] if((const signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 +Simple Condition (bool~) divr16s::$0 [128] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 +Simple Condition (bool~) divr16s::$1 [266] if((const signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [50] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 -Constant right-side identified [130] (signed word~) divr16s::$10 ← - (const signed word) divr16s::rem#0 +Constant right-side identified [51] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [131] (signed word~) divr16s::$10 ← - (const signed word) divr16s::rem#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Constant (const signed word) divr16s::$10 = -divr16s::rem#0 Constant (const word) divr16s::remu#2 = 0 Successful SSA optimization Pass2ConstantIdentification -Constant value identified (word)divr16s::$10 in [131] (word) divr16s::remu#1 ← (word)(const signed word) divr16s::$10 +Constant value identified (word)divr16s::$10 in [132] (word) divr16s::remu#1 ← (word)(const signed word) divr16s::$10 Successful SSA optimization Pass2ConstantValues -if() condition always false - eliminating [265] if((const signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 +if() condition always false - eliminating [266] if((const signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1 Successful SSA optimization Pass2ConstantIfs Simplifying constant evaluating to zero -(const signed word) divr16s::rem#0 in -Simplifying constant evaluating to zero (word)(const signed word) divr16s::$10 in [131] (word) divr16s::remu#1 ← (word)(const signed word) divr16s::$10 +Simplifying constant evaluating to zero (word)(const signed word) divr16s::$10 in [132] (word) divr16s::remu#1 ← (word)(const signed word) divr16s::$10 Successful SSA optimization PassNSimplifyConstantZero Eliminating unused constant (const signed word) divr16s::rem#0 Eliminating unused constant (const signed word) divr16s::$10 Successful SSA optimization PassNEliminateUnusedVars Constant (const word) divr16s::remu#1 = 0 Successful SSA optimization Pass2ConstantIdentification -Inlining Noop Cast [101] (byte) div8s::dividendu#1 ← (byte)(signed byte~) div8s::$5 keeping div8s::dividendu#1 -Inlining Noop Cast [106] (byte) div8s::divisoru#1 ← (byte)(signed byte~) div8s::$8 keeping div8s::divisoru#1 -Inlining Noop Cast [126] (word) divr16s::dividendu#1 ← (word)(signed word~) divr16s::$8 keeping divr16s::dividendu#1 -Inlining Noop Cast [131] (word) divr16s::divisoru#1 ← (word)(signed word~) divr16s::$13 keeping divr16s::divisoru#1 +Inlining Noop Cast [102] (byte) div8s::dividendu#1 ← (byte)(signed byte~) div8s::$5 keeping div8s::dividendu#1 +Inlining Noop Cast [107] (byte) div8s::divisoru#1 ← (byte)(signed byte~) div8s::$8 keeping div8s::divisoru#1 +Inlining Noop Cast [127] (word) divr16s::dividendu#1 ← (word)(signed word~) divr16s::$8 keeping divr16s::dividendu#1 +Inlining Noop Cast [132] (word) divr16s::divisoru#1 ← (word)(signed word~) divr16s::$13 keeping divr16s::divisoru#1 Successful SSA optimization Pass2NopCastInlining -Inlining Noop Cast [102] (byte) div8s::dividendu#2 ← (byte)(signed byte) div8s::dividend#0 keeping div8s::dividend#0 -Inlining Noop Cast [108] (byte) div8s::divisoru#2 ← (byte)(signed byte) div8s::divisor#0 keeping div8s::divisor#0 -Inlining Noop Cast [116] (signed byte) rem8s#1 ← (signed byte)(byte) rem8u#17 keeping rem8u#17 -Inlining Noop Cast [117] (signed byte) div8s::return#0 ← (signed byte)(byte) div8s::resultu#0 keeping div8s::resultu#0 -Inlining Noop Cast [120] (signed byte~) div8s::$13 ← (signed byte)(byte) div8s::resultu#0 keeping div8s::resultu#0 -Inlining Noop Cast [127] (word) divr16s::dividendu#2 ← (word)(signed word) divr16s::dividend#0 keeping divr16s::dividend#0 -Inlining Noop Cast [133] (word) divr16s::divisoru#2 ← (word)(signed word) divr16s::divisor#0 keeping divr16s::divisor#0 -Inlining Noop Cast [142] (signed word) rem16s#1 ← (signed word)(word) rem16u#1 keeping rem16u#1 -Inlining Noop Cast [143] (signed word) divr16s::return#0 ← (signed word)(word) divr16s::resultu#0 keeping divr16s::resultu#0 -Inlining Noop Cast [146] (signed word~) divr16s::$18 ← (signed word)(word) divr16s::resultu#0 keeping divr16s::resultu#0 +Inlining Noop Cast [103] (byte) div8s::dividendu#2 ← (byte)(signed byte) div8s::dividend#0 keeping div8s::dividend#0 +Inlining Noop Cast [109] (byte) div8s::divisoru#2 ← (byte)(signed byte) div8s::divisor#0 keeping div8s::divisor#0 +Inlining Noop Cast [117] (signed byte) rem8s#1 ← (signed byte)(byte) rem8u#17 keeping rem8u#17 +Inlining Noop Cast [118] (signed byte) div8s::return#0 ← (signed byte)(byte) div8s::resultu#0 keeping div8s::resultu#0 +Inlining Noop Cast [121] (signed byte~) div8s::$13 ← (signed byte)(byte) div8s::resultu#0 keeping div8s::resultu#0 +Inlining Noop Cast [128] (word) divr16s::dividendu#2 ← (word)(signed word) divr16s::dividend#0 keeping divr16s::dividend#0 +Inlining Noop Cast [134] (word) divr16s::divisoru#2 ← (word)(signed word) divr16s::divisor#0 keeping divr16s::divisor#0 +Inlining Noop Cast [143] (signed word) rem16s#1 ← (signed word)(word) rem16u#1 keeping rem16u#1 +Inlining Noop Cast [144] (signed word) divr16s::return#0 ← (signed word)(word) divr16s::resultu#0 keeping divr16s::resultu#0 +Inlining Noop Cast [147] (signed word~) divr16s::$18 ← (signed word)(word) divr16s::resultu#0 keeping divr16s::resultu#0 Successful SSA optimization Pass2NopCastInlining -Rewriting multiplication to use shift [186] (byte~) test_16u::$11 ← (byte) test_16u::i#10 * (const byte) SIZEOF_WORD -Rewriting multiplication to use shift [233] (byte~) test_16s::$11 ← (byte) test_16s::i#10 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift [187] (byte~) test_16u::$11 ← (byte) test_16u::i#10 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [234] (byte~) test_16s::$11 ← (byte) test_16s::i#10 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte*) print_str::str#1 Inlining constant with var siblings (const byte*) print_str::str#2 @@ -3404,6 +3425,7 @@ Inlining constant with var siblings (const byte*) print_str::str#12 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte) print_char::ch#2 +Inlining constant with var siblings (const byte) print_char::ch#3 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte) divr8u::rem#0 Inlining constant with var siblings (const byte) divr8u::quotient#0 @@ -3447,13 +3469,14 @@ Constant inlined test_16s::str2 = (const string) str2 Constant inlined test_16s::i#0 = (byte) 0 Constant inlined print_cls::sc#0 = (byte*) 1024 Constant inlined divr8u::rem#0 = (byte) 0 +Constant inlined print_char::ch#3 = (byte) ' ' Constant inlined divr8u::quotient#0 = (byte) 0 Constant inlined test_16u::str1 = (const string) str1 -Constant inlined print_char::ch#2 = (byte) ' ' +Constant inlined print_char::ch#2 = (byte) '-' Constant inlined test_16u::str = (const string) str Constant inlined print_str::str#9 = (const string) str2 Constant inlined test_16u::str2 = (const string) str2 -Constant inlined print_char::ch#1 = (byte) '-' +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' Constant inlined print_str::str#4 = (const string) str Constant inlined print_str::str#3 = (const string) str2 @@ -3483,7 +3506,6 @@ Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) divr16u::rem#10 (byte) 0 Successful SSA optimization Pass2IdenticalPhiElimination Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting divr8u::@8(between divr8u::@3 and divr8u::@1) Added new block during phi lifting divr8u::@9(between divr8u::@1 and divr8u::@2) @@ -3515,7 +3537,7 @@ Adding NOP phi() at start of test_16s::@4 Adding NOP phi() at start of test_16s::@6 Adding NOP phi() at start of test_16s::@8 Adding NOP phi() at start of print_ln::@2 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 Adding NOP phi() at start of divr16s::@16 @@ -3538,9 +3560,9 @@ CALL GRAPH Calls in [] to main:7 Calls in [main] to print_cls:11 test_8u:13 test_16u:15 test_8s:17 test_16s:19 Calls in [test_16s] to div16s:29 print_sword:35 print_str:37 print_sword:41 print_str:43 print_sword:47 print_str:49 print_sword:53 print_ln:55 -Calls in [print_sword] to print_char:71 print_word:79 -Calls in [print_word] to print_byte:88 print_byte:92 -Calls in [print_byte] to print_char:100 print_char:105 +Calls in [print_sword] to print_char:71 print_word:77 print_char:81 +Calls in [print_word] to print_byte:92 print_byte:96 +Calls in [print_byte] to print_char:104 print_char:109 Calls in [div16s] to divr16s:125 Calls in [divr16s] to divr16u:141 Calls in [test_8s] to div8s:195 print_sbyte:201 print_str:203 print_sbyte:207 print_str:209 print_sbyte:213 print_str:215 print_sbyte:219 print_ln:221 @@ -3551,38 +3573,37 @@ Calls in [test_16u] to div16u:313 print_word:319 print_str:321 print_word:325 pr Calls in [div16u] to divr16u:348 Calls in [test_8u] to div8u:360 print_byte:366 print_str:368 print_byte:372 print_str:374 print_byte:378 print_str:380 print_byte:384 print_ln:386 -Created 55 initial phi equivalence classes -Coalesced [33] print_sword::w#9 ← print_sword::w#1 -Not coalescing [34] print_char_cursor#161 ← print_line_cursor#1 -Coalesced [39] print_sword::w#10 ← print_sword::w#2 -Coalesced [40] print_char_cursor#162 ← print_char_cursor#128 -Coalesced [45] print_sword::w#11 ← print_sword::w#3 -Coalesced (already) [46] print_char_cursor#163 ← print_char_cursor#128 -Coalesced [51] print_sword::w#12 ← print_sword::w#4 -Coalesced (already) [52] print_char_cursor#164 ← print_char_cursor#128 +Created 54 initial phi equivalence classes +Coalesced [33] print_sword::w#11 ← print_sword::w#1 +Not coalescing [34] print_char_cursor#164 ← print_line_cursor#1 +Coalesced [39] print_sword::w#12 ← print_sword::w#2 +Coalesced [40] print_char_cursor#165 ← print_char_cursor#130 +Coalesced [45] print_sword::w#13 ← print_sword::w#3 +Coalesced (already) [46] print_char_cursor#166 ← print_char_cursor#130 +Coalesced [51] print_sword::w#14 ← print_sword::w#4 +Coalesced (already) [52] print_char_cursor#167 ← print_char_cursor#130 Coalesced [54] print_line_cursor#87 ← print_line_cursor#1 Coalesced [59] test_16s::i#12 ← test_16s::i#1 Coalesced [61] print_line_cursor#91 ← print_line_cursor#39 Coalesced (already) [67] print_line_cursor#92 ← print_line_cursor#1 -Coalesced [70] print_char_cursor#187 ← print_char_cursor#131 -Coalesced [73] print_sword::w#14 ← print_sword::w#0 -Coalesced [74] print_char_cursor#166 ← print_char_cursor#18 -Coalesced [77] print_word::w#7 ← print_word::w#0 -Coalesced [78] print_char_cursor#171 ← print_char_cursor#130 -Coalesced [82] print_sword::w#13 ← print_sword::w#5 -Coalesced [83] print_char_cursor#165 ← print_char_cursor#131 -Coalesced [86] print_byte::b#10 ← print_byte::b#1 -Coalesced [87] print_char_cursor#177 ← print_char_cursor#135 -Coalesced [90] print_byte::b#11 ← print_byte::b#2 -Coalesced (already) [91] print_char_cursor#178 ← print_char_cursor#18 -Coalesced [98] print_char::ch#6 ← print_char::ch#3 -Coalesced (already) [99] print_char_cursor#183 ← print_char_cursor#136 -Coalesced [103] print_char::ch#7 ← print_char::ch#4 -Coalesced (already) [104] print_char_cursor#184 ← print_char_cursor#18 +Coalesced [70] print_char_cursor#189 ← print_char_cursor#132 +Coalesced [72] print_sword::w#16 ← print_sword::w#10 +Coalesced [75] print_word::w#7 ← print_word::w#0 +Coalesced [76] print_char_cursor#172 ← print_char_cursor#19 +Coalesced (already) [80] print_char_cursor#188 ← print_char_cursor#132 +Coalesced [83] print_sword::w#15 ← print_sword::w#0 +Coalesced [90] print_byte::b#10 ← print_byte::b#1 +Coalesced [91] print_char_cursor#178 ← print_char_cursor#138 +Coalesced [94] print_byte::b#11 ← print_byte::b#2 +Coalesced (already) [95] print_char_cursor#179 ← print_char_cursor#19 +Coalesced [102] print_char::ch#7 ← print_char::ch#4 +Coalesced [103] print_char_cursor#184 ← print_char_cursor#139 +Coalesced [107] print_char::ch#8 ← print_char::ch#5 +Coalesced (already) [108] print_char_cursor#185 ← print_char_cursor#19 Coalesced [113] print_str::str#16 ← print_str::str#15 -Coalesced (already) [114] print_char_cursor#159 ← print_char_cursor#18 +Coalesced (already) [114] print_char_cursor#162 ← print_char_cursor#19 Coalesced [121] print_str::str#17 ← print_str::str#0 -Coalesced [122] print_char_cursor#160 ← print_char_cursor#1 +Coalesced [122] print_char_cursor#163 ← print_char_cursor#1 Coalesced [135] divr16s::neg#10 ← divr16s::neg#3 Coalesced [139] divr16u::dividend#10 ← divr16u::dividend#2 Coalesced [140] divr16u::divisor#9 ← divr16u::divisor#1 @@ -3601,20 +3622,20 @@ Coalesced [186] divr16u::rem#15 ← divr16u::rem#6 Coalesced [187] divr16u::return#7 ← divr16u::quotient#1 Coalesced [188] divr16u::rem#13 ← divr16u::rem#0 Coalesced [199] print_sbyte::b#11 ← print_sbyte::b#1 -Not coalescing [200] print_char_cursor#167 ← print_line_cursor#1 +Not coalescing [200] print_char_cursor#168 ← print_line_cursor#1 Coalesced [205] print_sbyte::b#12 ← print_sbyte::b#2 -Coalesced [206] print_char_cursor#168 ← print_char_cursor#128 +Coalesced [206] print_char_cursor#169 ← print_char_cursor#130 Coalesced [211] print_sbyte::b#13 ← print_sbyte::b#3 -Coalesced (already) [212] print_char_cursor#169 ← print_char_cursor#128 +Coalesced (already) [212] print_char_cursor#170 ← print_char_cursor#130 Coalesced [217] print_sbyte::b#14 ← print_sbyte::b#4 -Coalesced (already) [218] print_char_cursor#170 ← print_char_cursor#128 +Coalesced (already) [218] print_char_cursor#171 ← print_char_cursor#130 Coalesced (already) [220] print_line_cursor#89 ← print_line_cursor#1 Coalesced [225] test_8s::i#12 ← test_8s::i#1 -Coalesced (already) [228] print_char_cursor#186 ← print_char_cursor#132 +Coalesced (already) [228] print_char_cursor#187 ← print_char_cursor#135 Coalesced [230] print_sbyte::b#16 ← print_sbyte::b#10 Coalesced [233] print_byte::b#9 ← print_byte::b#0 -Coalesced (already) [234] print_char_cursor#176 ← print_char_cursor#18 -Coalesced (already) [238] print_char_cursor#185 ← print_char_cursor#132 +Coalesced (already) [234] print_char_cursor#177 ← print_char_cursor#19 +Coalesced (already) [238] print_char_cursor#186 ← print_char_cursor#135 Coalesced [241] print_sbyte::b#15 ← print_sbyte::b#0 Coalesced [247] div8s::neg#10 ← div8s::neg#3 Coalesced [251] div8u::dividend#3 ← div8u::dividend#0 @@ -3634,13 +3655,13 @@ Coalesced [303] divr8u::rem#14 ← divr8u::rem#5 Coalesced [304] divr8u::return#5 ← divr8u::quotient#1 Coalesced [305] divr8u::rem#12 ← divr8u::rem#1 Coalesced [317] print_word::w#8 ← print_word::w#1 -Not coalescing [318] print_char_cursor#172 ← print_line_cursor#1 +Not coalescing [318] print_char_cursor#173 ← print_line_cursor#1 Coalesced [323] print_word::w#9 ← print_word::w#2 -Coalesced (already) [324] print_char_cursor#173 ← print_char_cursor#128 +Coalesced (already) [324] print_char_cursor#174 ← print_char_cursor#130 Coalesced [329] print_word::w#10 ← print_word::w#3 -Coalesced (already) [330] print_char_cursor#174 ← print_char_cursor#128 +Coalesced (already) [330] print_char_cursor#175 ← print_char_cursor#130 Coalesced [335] print_word::w#11 ← print_word::w#4 -Coalesced (already) [336] print_char_cursor#175 ← print_char_cursor#128 +Coalesced (already) [336] print_char_cursor#176 ← print_char_cursor#130 Coalesced (already) [338] print_line_cursor#88 ← print_line_cursor#1 Coalesced [343] test_16u::i#12 ← test_16u::i#1 Coalesced [346] divr16u::dividend#9 ← divr16u::dividend#1 @@ -3648,16 +3669,16 @@ Coalesced [347] divr16u::divisor#8 ← divr16u::divisor#0 Coalesced [358] div8u::dividend#4 ← div8u::dividend#1 Coalesced [359] div8u::divisor#4 ← div8u::divisor#1 Coalesced [364] print_byte::b#12 ← print_byte::b#3 -Coalesced [365] print_char_cursor#179 ← print_char_cursor#138 +Coalesced [365] print_char_cursor#180 ← print_char_cursor#141 Coalesced [370] print_byte::b#13 ← print_byte::b#4 -Coalesced (already) [371] print_char_cursor#180 ← print_char_cursor#128 +Coalesced (already) [371] print_char_cursor#181 ← print_char_cursor#130 Coalesced [376] print_byte::b#14 ← print_byte::b#5 -Coalesced (already) [377] print_char_cursor#181 ← print_char_cursor#128 +Coalesced (already) [377] print_char_cursor#182 ← print_char_cursor#130 Coalesced [382] print_byte::b#15 ← print_byte::b#6 -Coalesced (already) [383] print_char_cursor#182 ← print_char_cursor#128 +Coalesced (already) [383] print_char_cursor#183 ← print_char_cursor#130 Coalesced [385] print_line_cursor#90 ← print_line_cursor#41 Coalesced [390] test_8u::i#12 ← test_8u::i#1 -Not coalescing [391] print_char_cursor#188 ← print_line_cursor#1 +Not coalescing [391] print_char_cursor#190 ← print_line_cursor#1 Coalesced (already) [392] print_line_cursor#93 ← print_line_cursor#1 Coalesced [400] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 34 phi equivalence classes @@ -3671,8 +3692,8 @@ Culled Empty Block (label) main::@5 Culled Empty Block (label) test_16s::@12 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@3 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) divr16s::@16 @@ -3689,7 +3710,7 @@ Culled Empty Block (label) test_16u::@12 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @32 to @1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block print_sbyte::@5 to print_sbyte::@4 Renumbering block div8u::@2 to div8u::@1 Renumbering block div16u::@2 to div16u::@1 @@ -3752,7 +3773,8 @@ Adding NOP phi() at start of test_16s::@3 Adding NOP phi() at start of test_16s::@5 Adding NOP phi() at start of test_16s::@7 Adding NOP phi() at start of test_16s::@9 -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of test_8s Adding NOP phi() at start of test_8s::@3 Adding NOP phi() at start of test_8s::@5 @@ -3822,7 +3844,7 @@ test_16s::@1: scope:[test_16s] from test_16s test_16s::@10 test_16s::@2: scope:[test_16s] from test_16s::@1 [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - [26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 + [26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1 [27] call print_sword to:test_16s::@3 test_16s::@3: scope:[test_16s] from test_16s::@2 @@ -3866,496 +3888,499 @@ print_ln: scope:[print_ln] from test_16s::@9 test_16u::@9 test_8s::@9 test_8u:: print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [46] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 - [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 + [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [49] return to:@return print_sword: scope:[print_sword] from test_16s::@2 test_16s::@4 test_16s::@6 test_16s::@8 - [50] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#161 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 ) - [50] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 ) - [51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [50] (byte*) print_char_cursor#132 ← phi( test_16s::@2/(byte*~) print_char_cursor#164 test_16s::@4/(byte*) print_char_cursor#130 test_16s::@6/(byte*) print_char_cursor#130 test_16s::@8/(byte*) print_char_cursor#130 ) + [50] (signed word) print_sword::w#10 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 ) + [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [52] phi() [53] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [55] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 ) - [55] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 ) - [56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 - [57] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [54] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 ) + [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + [56] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [58] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [57] return to:@return -print_word: scope:[print_word] from print_sword::@1 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8 - [59] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#172 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 ) - [59] (word) print_word::w#5 ← phi( print_sword::@1/(word) print_word::w#0 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 ) - [60] (byte) print_byte::b#1 ← > (word) print_word::w#5 - [61] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [62] (byte) print_byte::b#2 ← < (word) print_word::w#5 - [63] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [64] return - to:@return -print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8 - [65] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 ) - [65] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 ) - [66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 - [67] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [68] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f - [70] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [71] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [72] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - [73] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 ) - [73] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) - [74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 - [75] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 +print_sword::@1: scope:[print_sword] from print_sword + [58] phi() + [59] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + [61] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#135 print_sbyte::@3/(byte*) print_char_cursor#135 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#132 ) + [61] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 + [63] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#84 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [76] return + [64] return + to:@return +print_word: scope:[print_word] from print_sword::@2 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8 + [65] (byte*) print_char_cursor#138 ← phi( print_sword::@2/(byte*) print_char_cursor#19 test_16u::@2/(byte*~) print_char_cursor#173 test_16u::@4/(byte*) print_char_cursor#130 test_16u::@6/(byte*) print_char_cursor#130 test_16u::@8/(byte*) print_char_cursor#130 ) + [65] (word) print_word::w#5 ← phi( print_sword::@2/(word) print_word::w#0 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 ) + [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 + [67] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 + [69] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [70] return + to:@return +print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8 + [71] (byte*) print_char_cursor#139 ← phi( print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#138 print_word::@1/(byte*) print_char_cursor#19 test_8u::@2/(byte*) print_char_cursor#141 test_8u::@4/(byte*) print_char_cursor#130 test_8u::@6/(byte*) print_char_cursor#130 test_8u::@8/(byte*) print_char_cursor#130 ) + [71] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 ) + [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 + [73] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [74] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f + [76] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [77] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [78] return to:@return print_str: scope:[print_str] from test_16s::@3 test_16s::@5 test_16s::@7 test_16u::@3 test_16u::@5 test_16u::@7 test_8s::@3 test_8s::@5 test_8s::@7 test_8u::@3 test_8u::@5 test_8u::@7 - [77] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 ) + [79] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [78] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 ) - [78] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) - [79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 + [80] (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#19 print_str::@2/(byte*) print_char_cursor#1 ) + [80] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) + [81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [80] return + [82] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) - [82] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 - [83] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 + [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) + [84] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 + [85] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 to:print_str::@1 div16s: scope:[div16s] from test_16s::@1 - [84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 - [85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 - [86] call divr16s - [87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 + [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 + [88] call divr16s + [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:div16s::@1 div16s::@1: scope:[div16s] from div16s - [88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 to:div16s::@return div16s::@return: scope:[div16s] from div16s::@1 - [89] return + [91] return to:@return divr16s: scope:[divr16s] from div16s - [90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 + [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 to:divr16s::@6 divr16s::@6: scope:[divr16s] from divr16s - [91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + [93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@6 - [92] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@6/(word~) divr16s::dividendu#8 ) - [92] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 ) - [93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 + [94] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@6/(word~) divr16s::dividendu#8 ) + [94] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 ) + [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 to:divr16s::@7 divr16s::@7: scope:[divr16s] from divr16s::@2 - [94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@7 - [95] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 ) - [95] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@7/(word~) divr16s::divisoru#5 ) - [96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - [97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - [98] call divr16u - [99] (word) divr16u::return#3 ← (word) divr16u::return#0 + [97] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 ) + [97] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@7/(word~) divr16s::divisoru#5 ) + [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + [100] call divr16u + [101] (word) divr16u::return#3 ← (word) divr16u::return#0 to:divr16s::@9 divr16s::@9: scope:[divr16s] from divr16s::@4 - [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - [101] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 + [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + [103] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 to:divr16s::@8 divr16s::@8: scope:[divr16s] from divr16s::@9 - [102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 - [103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 - [104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 + [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 + [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@8 - [105] (signed word) rem16s#11 ← phi( divr16s::@8/(signed word) rem16s#2 divr16s::@5/(signed word~) rem16s#37 ) - [105] (signed word) divr16s::return#2 ← phi( divr16s::@8/(signed word) divr16s::return#1 divr16s::@5/(signed word~) divr16s::return#7 ) - [106] return + [107] (signed word) rem16s#11 ← phi( divr16s::@8/(signed word) rem16s#2 divr16s::@5/(signed word~) rem16s#37 ) + [107] (signed word) divr16s::return#2 ← phi( divr16s::@8/(signed word) divr16s::return#1 divr16s::@5/(signed word~) divr16s::return#7 ) + [108] return to:@return divr16s::@5: scope:[divr16s] from divr16s::@9 - [107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - [108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + [109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 - [110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 - [111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 + [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 + [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 + [113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s - [112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 - [113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 + [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 + [115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 to:divr16s::@2 divr16u: scope:[divr16u] from div16u divr16s::@4 - [114] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 ) - [114] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 ) + [116] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 ) + [116] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [115] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [115] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [115] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [115] (word) divr16u::rem#5 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#11 ) - [116] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [118] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [119] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [117] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [117] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [117] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [117] (word) divr16u::rem#5 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#11 ) + [118] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [120] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [121] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [121] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [122] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [123] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 + [123] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [124] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [125] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [125] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 + [127] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [127] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [127] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [128] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [129] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [129] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [129] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [130] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [131] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [130] (word) rem16u#1 ← (word) divr16u::rem#11 + [132] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [131] return + [133] return to:@return test_8s: scope:[test_8s] from main::@3 - [132] phi() + [134] phi() to:test_8s::@1 test_8s::@1: scope:[test_8s] from test_8s test_8s::@10 - [133] (byte) test_8s::i#10 ← phi( test_8s/(byte) 0 test_8s::@10/(byte) test_8s::i#1 ) - [134] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) - [135] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) - [136] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 - [137] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 - [138] call div8s - [139] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + [135] (byte) test_8s::i#10 ← phi( test_8s/(byte) 0 test_8s::@10/(byte) test_8s::i#1 ) + [136] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) + [137] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) + [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 + [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 + [140] call div8s + [141] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 to:test_8s::@2 test_8s::@2: scope:[test_8s] from test_8s::@1 - [140] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 - [141] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - [142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1 - [143] call print_sbyte + [142] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 + [143] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + [144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1 + [145] call print_sbyte to:test_8s::@3 test_8s::@3: scope:[test_8s] from test_8s::@2 - [144] phi() - [145] call print_str + [146] phi() + [147] call print_str to:test_8s::@4 test_8s::@4: scope:[test_8s] from test_8s::@3 - [146] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 - [147] call print_sbyte + [148] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 + [149] call print_sbyte to:test_8s::@5 test_8s::@5: scope:[test_8s] from test_8s::@4 - [148] phi() - [149] call print_str + [150] phi() + [151] call print_str to:test_8s::@6 test_8s::@6: scope:[test_8s] from test_8s::@5 - [150] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 - [151] call print_sbyte + [152] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 + [153] call print_sbyte to:test_8s::@7 test_8s::@7: scope:[test_8s] from test_8s::@6 - [152] phi() - [153] call print_str + [154] phi() + [155] call print_str to:test_8s::@8 test_8s::@8: scope:[test_8s] from test_8s::@7 - [154] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 - [155] call print_sbyte + [156] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 + [157] call print_sbyte to:test_8s::@9 test_8s::@9: scope:[test_8s] from test_8s::@8 - [156] phi() - [157] call print_ln + [158] phi() + [159] call print_ln to:test_8s::@10 test_8s::@10: scope:[test_8s] from test_8s::@9 - [158] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 - [159] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 + [160] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 + [161] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 to:test_8s::@return test_8s::@return: scope:[test_8s] from test_8s::@10 - [160] return + [162] return to:@return print_sbyte: scope:[print_sbyte] from test_8s::@2 test_8s::@4 test_8s::@6 test_8s::@8 - [161] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#167 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 ) - [161] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 ) - [162] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 + [163] (byte*) print_char_cursor#135 ← phi( test_8s::@2/(byte*~) print_char_cursor#168 test_8s::@4/(byte*) print_char_cursor#130 test_8s::@6/(byte*) print_char_cursor#130 test_8s::@8/(byte*) print_char_cursor#130 ) + [163] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 ) + [164] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [163] phi() - [164] call print_char + [165] phi() + [166] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [165] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 ) - [166] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 - [167] call print_byte + [167] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 ) + [168] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 + [169] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [168] return + [170] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [169] phi() - [170] call print_char + [171] phi() + [172] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 + [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 to:print_sbyte::@2 div8s: scope:[div8s] from test_8s::@1 - [172] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 + [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 to:div8s::@6 div8s::@6: scope:[div8s] from div8s - [173] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + [175] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 to:div8s::@2 div8s::@2: scope:[div8s] from div8s::@1 div8s::@6 - [174] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@6/(byte~) div8s::dividendu#8 ) - [174] (byte) div8s::neg#3 ← phi( div8s::@1/(byte) 1 div8s::@6/(byte) 0 ) - [175] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 + [176] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@6/(byte~) div8s::dividendu#8 ) + [176] (byte) div8s::neg#3 ← phi( div8s::@1/(byte) 1 div8s::@6/(byte) 0 ) + [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 to:div8s::@7 div8s::@7: scope:[div8s] from div8s::@2 - [176] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + [178] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 to:div8s::@4 div8s::@4: scope:[div8s] from div8s::@3 div8s::@7 - [177] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@7/(byte) div8s::neg#3 ) - [177] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@7/(byte~) div8s::divisoru#5 ) - [178] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 - [179] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - [180] call div8u - [181] (byte) div8u::return#2 ← (byte) div8u::return#0 + [179] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@7/(byte) div8s::neg#3 ) + [179] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@7/(byte~) div8s::divisoru#5 ) + [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 + [181] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + [182] call div8u + [183] (byte) div8u::return#2 ← (byte) div8u::return#0 to:div8s::@9 div8s::@9: scope:[div8s] from div8s::@4 - [182] (byte) div8s::resultu#0 ← (byte) div8u::return#2 - [183] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 + [184] (byte) div8s::resultu#0 ← (byte) div8u::return#2 + [185] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 to:div8s::@8 div8s::@8: scope:[div8s] from div8s::@9 - [184] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 - [185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 - [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 + [186] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 + [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 + [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 to:div8s::@return div8s::@return: scope:[div8s] from div8s::@5 div8s::@8 - [187] (signed byte) rem8s#3 ← phi( div8s::@8/(signed byte) rem8s#2 div8s::@5/(signed byte~) rem8s#33 ) - [187] (signed byte) div8s::return#2 ← phi( div8s::@8/(signed byte) div8s::return#1 div8s::@5/(signed byte~) div8s::return#7 ) - [188] return + [189] (signed byte) rem8s#3 ← phi( div8s::@8/(signed byte) rem8s#2 div8s::@5/(signed byte~) rem8s#33 ) + [189] (signed byte) div8s::return#2 ← phi( div8s::@8/(signed byte) div8s::return#1 div8s::@5/(signed byte~) div8s::return#7 ) + [190] return to:@return div8s::@5: scope:[div8s] from div8s::@9 - [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 - [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + [191] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 + [192] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 to:div8s::@return div8s::@3: scope:[div8s] from div8s::@2 - [191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 - [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 - [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 + [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 + [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 + [195] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 to:div8s::@4 div8s::@1: scope:[div8s] from div8s - [194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 - [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 + [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 + [197] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 to:div8s::@2 div8u: scope:[div8u] from div8s::@4 test_8u::@1 - [196] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 ) - [196] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 ) - [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 - [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 - [199] call divr8u - [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 + [198] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 ) + [198] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 ) + [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 + [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 + [201] call divr8u + [202] (byte) divr8u::return#0 ← (byte) divr8u::return#1 to:div8u::@1 div8u::@1: scope:[div8u] from div8u - [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 + [203] (byte) div8u::return#0 ← (byte) divr8u::return#0 to:div8u::@return div8u::@return: scope:[div8u] from div8u::@1 - [202] return + [204] return to:@return divr8u: scope:[divr8u] from div8u - [203] phi() + [205] phi() to:divr8u::@1 divr8u::@1: scope:[divr8u] from divr8u divr8u::@3 - [204] (byte) divr8u::i#2 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::i#1 ) - [204] (byte) divr8u::quotient#3 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::return#1 ) - [204] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 ) - [204] (byte) divr8u::rem#4 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::rem#10 ) - [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 - [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 - [207] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 + [206] (byte) divr8u::i#2 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::i#1 ) + [206] (byte) divr8u::quotient#3 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::return#1 ) + [206] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 ) + [206] (byte) divr8u::rem#4 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::rem#10 ) + [207] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 + [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 + [209] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 to:divr8u::@4 divr8u::@4: scope:[divr8u] from divr8u::@1 - [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 + [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 to:divr8u::@2 divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4 - [209] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 ) - [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 - [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 - [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 + [211] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 ) + [212] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 + [213] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 + [214] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 to:divr8u::@5 divr8u::@5: scope:[divr8u] from divr8u::@2 - [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 - [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 + [215] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 + [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 to:divr8u::@3 divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5 - [215] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 ) - [215] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 ) - [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 - [217] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 + [217] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 ) + [217] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 ) + [218] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 + [219] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 to:divr8u::@6 divr8u::@6: scope:[divr8u] from divr8u::@3 - [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 + [220] (byte) rem8u#17 ← (byte) divr8u::rem#10 to:divr8u::@return divr8u::@return: scope:[divr8u] from divr8u::@6 - [219] return + [221] return to:@return test_16u: scope:[test_16u] from main::@2 - [220] phi() + [222] phi() to:test_16u::@1 test_16u::@1: scope:[test_16u] from test_16u test_16u::@10 - [221] (byte) test_16u::i#10 ← phi( test_16u/(byte) 0 test_16u::@10/(byte) test_16u::i#1 ) - [222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 - [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) - [224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) - [225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - [226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - [227] call div16u - [228] (word) div16u::return#2 ← (word) div16u::return#0 + [223] (byte) test_16u::i#10 ← phi( test_16u/(byte) 0 test_16u::@10/(byte) test_16u::i#1 ) + [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 + [225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) + [226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) + [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + [229] call div16u + [230] (word) div16u::return#2 ← (word) div16u::return#0 to:test_16u::@2 test_16u::@2: scope:[test_16u] from test_16u::@1 - [229] (word) test_16u::res#0 ← (word) div16u::return#2 - [230] (word) print_word::w#1 ← (word) test_16u::dividend#0 - [231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1 - [232] call print_word + [231] (word) test_16u::res#0 ← (word) div16u::return#2 + [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 + [233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1 + [234] call print_word to:test_16u::@3 test_16u::@3: scope:[test_16u] from test_16u::@2 - [233] phi() - [234] call print_str + [235] phi() + [236] call print_str to:test_16u::@4 test_16u::@4: scope:[test_16u] from test_16u::@3 - [235] (word) print_word::w#2 ← (word) test_16u::divisor#0 - [236] call print_word + [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 + [238] call print_word to:test_16u::@5 test_16u::@5: scope:[test_16u] from test_16u::@4 - [237] phi() - [238] call print_str + [239] phi() + [240] call print_str to:test_16u::@6 test_16u::@6: scope:[test_16u] from test_16u::@5 - [239] (word) print_word::w#3 ← (word) test_16u::res#0 - [240] call print_word + [241] (word) print_word::w#3 ← (word) test_16u::res#0 + [242] call print_word to:test_16u::@7 test_16u::@7: scope:[test_16u] from test_16u::@6 - [241] phi() - [242] call print_str + [243] phi() + [244] call print_str to:test_16u::@8 test_16u::@8: scope:[test_16u] from test_16u::@7 - [243] (word) print_word::w#4 ← (word) rem16u#1 - [244] call print_word + [245] (word) print_word::w#4 ← (word) rem16u#1 + [246] call print_word to:test_16u::@9 test_16u::@9: scope:[test_16u] from test_16u::@8 - [245] phi() - [246] call print_ln + [247] phi() + [248] call print_ln to:test_16u::@10 test_16u::@10: scope:[test_16u] from test_16u::@9 - [247] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 - [248] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 + [249] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 + [250] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 to:test_16u::@return test_16u::@return: scope:[test_16u] from test_16u::@10 - [249] return + [251] return to:@return div16u: scope:[div16u] from test_16u::@1 - [250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 - [251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - [252] call divr16u - [253] (word) divr16u::return#2 ← (word) divr16u::return#0 + [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 + [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + [254] call divr16u + [255] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@1 div16u::@1: scope:[div16u] from div16u - [254] (word) div16u::return#0 ← (word) divr16u::return#2 + [256] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@1 - [255] return + [257] return to:@return test_8u: scope:[test_8u] from main::@1 - [256] phi() + [258] phi() to:test_8u::@1 test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 - [257] (byte*) print_line_cursor#41 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*) print_line_cursor#1 ) - [257] (byte*) print_char_cursor#138 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*~) print_char_cursor#188 ) - [257] (byte) test_8u::i#10 ← phi( test_8u/(byte) 0 test_8u::@11/(byte) test_8u::i#1 ) - [258] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) - [259] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) - [260] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 - [261] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 - [262] call div8u - [263] (byte) div8u::return#3 ← (byte) div8u::return#0 + [259] (byte*) print_line_cursor#41 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*) print_line_cursor#1 ) + [259] (byte*) print_char_cursor#141 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*~) print_char_cursor#190 ) + [259] (byte) test_8u::i#10 ← phi( test_8u/(byte) 0 test_8u::@11/(byte) test_8u::i#1 ) + [260] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) + [261] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) + [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 + [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 + [264] call div8u + [265] (byte) div8u::return#3 ← (byte) div8u::return#0 to:test_8u::@2 test_8u::@2: scope:[test_8u] from test_8u::@1 - [264] (byte) test_8u::res#0 ← (byte) div8u::return#3 - [265] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - [266] call print_byte + [266] (byte) test_8u::res#0 ← (byte) div8u::return#3 + [267] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + [268] call print_byte to:test_8u::@3 test_8u::@3: scope:[test_8u] from test_8u::@2 - [267] phi() - [268] call print_str + [269] phi() + [270] call print_str to:test_8u::@4 test_8u::@4: scope:[test_8u] from test_8u::@3 - [269] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 - [270] call print_byte + [271] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 + [272] call print_byte to:test_8u::@5 test_8u::@5: scope:[test_8u] from test_8u::@4 - [271] phi() - [272] call print_str + [273] phi() + [274] call print_str to:test_8u::@6 test_8u::@6: scope:[test_8u] from test_8u::@5 - [273] (byte) print_byte::b#5 ← (byte) test_8u::res#0 - [274] call print_byte + [275] (byte) print_byte::b#5 ← (byte) test_8u::res#0 + [276] call print_byte to:test_8u::@7 test_8u::@7: scope:[test_8u] from test_8u::@6 - [275] phi() - [276] call print_str + [277] phi() + [278] call print_str to:test_8u::@8 test_8u::@8: scope:[test_8u] from test_8u::@7 - [277] (byte) print_byte::b#6 ← (byte) rem8u#17 - [278] call print_byte + [279] (byte) print_byte::b#6 ← (byte) rem8u#17 + [280] call print_byte to:test_8u::@9 test_8u::@9: scope:[test_8u] from test_8u::@8 - [279] phi() - [280] call print_ln + [281] phi() + [282] call print_ln to:test_8u::@10 test_8u::@10: scope:[test_8u] from test_8u::@9 - [281] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 - [282] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 + [283] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 + [284] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 to:test_8u::@return test_8u::@return: scope:[test_8u] from test_8u::@10 - [283] return + [285] return to:@return test_8u::@11: scope:[test_8u] from test_8u::@10 - [284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 + [286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 to:test_8u::@1 print_cls: scope:[print_cls] from main - [285] phi() + [287] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [286] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [287] *((byte*) print_cls::sc#2) ← (byte) ' ' - [288] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [288] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [289] *((byte*) print_cls::sc#2) ← (byte) ' ' + [290] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [290] return + [292] return to:@return @@ -4516,24 +4541,23 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#7 13.5 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#3 4.0 (byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 6.0 +(byte) print_char::ch#5 4.0 +(byte) print_char::ch#6 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#128 15.607142857142856 -(byte*) print_char_cursor#130 3.0 -(byte*) print_char_cursor#131 15.999999999999998 +(byte*) print_char_cursor#130 15.607142857142856 (byte*) print_char_cursor#132 12.0 -(byte*) print_char_cursor#135 24.0 -(byte*) print_char_cursor#136 17.333333333333332 -(byte*) print_char_cursor#138 2.4444444444444446 -(byte*~) print_char_cursor#161 22.0 -(byte*~) print_char_cursor#167 22.0 -(byte*~) print_char_cursor#172 22.0 -(byte*) print_char_cursor#18 1.9152542372881352 -(byte*~) print_char_cursor#188 22.0 -(byte*) print_char_cursor#82 7.0 +(byte*) print_char_cursor#135 12.0 +(byte*) print_char_cursor#138 24.0 +(byte*) print_char_cursor#139 17.333333333333332 +(byte*) print_char_cursor#141 2.4444444444444446 +(byte*~) print_char_cursor#164 22.0 +(byte*~) print_char_cursor#168 22.0 +(byte*~) print_char_cursor#173 22.0 +(byte*) print_char_cursor#19 1.8225806451612903 +(byte*~) print_char_cursor#190 22.0 +(byte*) print_char_cursor#84 8.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -4564,11 +4588,11 @@ VARIABLE REGISTER WEIGHTS (signed word) print_sword::w (signed word) print_sword::w#0 4.0 (signed word) print_sword::w#1 11.0 +(signed word) print_sword::w#10 8.333333333333332 (signed word) print_sword::w#2 22.0 (signed word) print_sword::w#3 22.0 (signed word) print_sword::w#4 22.0 -(signed word) print_sword::w#5 12.5 -(signed word) print_sword::w#6 4.0 +(signed word) print_sword::w#7 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 4.0 @@ -4643,11 +4667,11 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ test_16s::i#10 test_16s::i#1 ] [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] -[ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] +[ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] +[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] +[ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -[ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] [ print_str::str#13 print_str::str#15 print_str::str#0 ] [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] @@ -4728,11 +4752,11 @@ Added variable test_8u::res#0 to zero page equivalence class [ test_8u::res#0 ] Complete equivalence classes [ test_16s::i#10 test_16s::i#1 ] [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] -[ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] +[ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] +[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] +[ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -[ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] [ print_str::str#13 print_str::str#15 print_str::str#0 ] [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] @@ -4812,11 +4836,11 @@ Complete equivalence classes [ test_8u::res#0 ] Allocated zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] Allocated zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] -Allocated zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] -Allocated zp ZP_WORD:7 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] -Allocated zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -Allocated zp ZP_BYTE:10 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Allocated zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] +Allocated zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] +Allocated zp ZP_BYTE:7 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Allocated zp ZP_WORD:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] +Allocated zp ZP_WORD:10 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] +Allocated zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] Allocated zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] Allocated zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] Allocated zp ZP_WORD:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] @@ -4903,7 +4927,7 @@ INITIAL ASM :BasicUpstart(bbegin) .pc = $80d "Program" //SEG2 Global Constants & labels - .label print_char_cursor = $b + .label print_char_cursor = $a .label print_line_cursor = 3 .label rem16u = $55 .label rem8s = $27 @@ -4928,7 +4952,7 @@ bend: //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [285] phi from main to print_cls [phi:main->print_cls] + //SEG12 [287] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -4937,7 +4961,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call test_8u - //SEG16 [256] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG16 [258] phi from main::@1 to test_8u [phi:main::@1->test_8u] test_8u_from_b1: jsr test_8u //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -4946,7 +4970,7 @@ main: { //SEG18 main::@2 b2: //SEG19 [9] call test_16u - //SEG20 [220] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG20 [222] phi from main::@2 to test_16u [phi:main::@2->test_16u] test_16u_from_b2: jsr test_16u //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -4955,7 +4979,7 @@ main: { //SEG22 main::@3 b3: //SEG23 [11] call test_8s - //SEG24 [132] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG24 [134] phi from main::@3 to test_8s [phi:main::@3->test_8s] test_8s_from_b3: jsr test_8s //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -5038,7 +5062,7 @@ test_16s: { sta print_sword.w lda dividend+1 sta print_sword.w+1 - //SEG47 [26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG47 [26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -5046,8 +5070,8 @@ test_16s: { //SEG48 [27] call print_sword //SEG49 [50] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] print_sword_from_b2: - //SEG50 [50] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#161 [phi:test_16s::@2->print_sword#0] -- register_copy - //SEG51 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy + //SEG50 [50] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#164 [phi:test_16s::@2->print_sword#0] -- register_copy + //SEG51 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy jsr print_sword //SEG52 [28] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] b3_from_b2: @@ -5055,9 +5079,9 @@ test_16s: { //SEG53 test_16s::@3 b3: //SEG54 [29] call print_str - //SEG55 [77] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] + //SEG55 [79] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] print_str_from_b3: - //SEG56 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG56 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 lda #str @@ -5074,8 +5098,8 @@ test_16s: { //SEG59 [31] call print_sword //SEG60 [50] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] print_sword_from_b4: - //SEG61 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy - //SEG62 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy + //SEG61 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@4->print_sword#0] -- register_copy + //SEG62 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy jsr print_sword //SEG63 [32] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] b5_from_b4: @@ -5083,9 +5107,9 @@ test_16s: { //SEG64 test_16s::@5 b5: //SEG65 [33] call print_str - //SEG66 [77] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] + //SEG66 [79] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] print_str_from_b5: - //SEG67 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG67 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 @@ -5102,8 +5126,8 @@ test_16s: { //SEG70 [35] call print_sword //SEG71 [50] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] print_sword_from_b6: - //SEG72 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy - //SEG73 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy + //SEG72 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@6->print_sword#0] -- register_copy + //SEG73 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy jsr print_sword //SEG74 [36] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] b7_from_b6: @@ -5111,9 +5135,9 @@ test_16s: { //SEG75 test_16s::@7 b7: //SEG76 [37] call print_str - //SEG77 [77] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] + //SEG77 [79] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] print_str_from_b7: - //SEG78 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG78 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 @@ -5130,8 +5154,8 @@ test_16s: { //SEG81 [39] call print_sword //SEG82 [50] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] print_sword_from_b8: - //SEG83 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy - //SEG84 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy + //SEG83 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@8->print_sword#0] -- register_copy + //SEG84 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy jsr print_sword //SEG85 [40] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] b9_from_b8: @@ -5178,7 +5202,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG100 [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG100 [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5198,26 +5222,62 @@ print_ln: { // print_sword(signed word zeropage(5) w) print_sword: { .label w = 5 - //SEG104 [51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG104 [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG105 [52] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG106 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG105 [52] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG106 print_sword::@3 + b3: //SEG107 [53] call print_char - //SEG108 [73] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG109 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG110 [73] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG108 [61] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG109 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG110 [61] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG111 [54] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG112 [54] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG113 print_sword::@2 + b2: + //SEG114 [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG115 [56] call print_word + //SEG116 [65] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG117 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG118 [65] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG119 print_sword::@return + breturn: + //SEG120 [57] return + rts + //SEG121 [58] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG122 print_sword::@1 + b1: + //SEG123 [59] call print_char + //SEG124 [61] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG125 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG126 [61] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG111 print_sword::@3 - b3: - //SEG112 [54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG127 print_sword::@4 + b4: + //SEG128 [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -5225,173 +5285,150 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG113 [55] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG114 [55] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG115 [55] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG116 print_sword::@1 - b1: - //SEG117 [56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG118 [57] call print_word - //SEG119 [59] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG120 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG121 [59] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word + jmp b2_from_b4 +} +//SEG129 print_char +// Print a single char +// print_char(byte zeropage(7) ch) +print_char: { + .label ch = 7 + //SEG130 [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuz2 + lda ch + ldy #0 + sta (print_char_cursor),y + //SEG131 [63] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: jmp breturn - //SEG122 print_sword::@return + //SEG132 print_char::@return breturn: - //SEG123 [58] return + //SEG133 [64] return rts } -//SEG124 print_word +//SEG134 print_word // Print a word as HEX -// print_word(word zeropage(7) w) +// print_word(word zeropage(8) w) print_word: { - .label w = 7 - //SEG125 [60] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + .label w = 8 + //SEG135 [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG126 [61] call print_byte - //SEG127 [65] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG136 [67] call print_byte + //SEG137 [71] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG128 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG129 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG138 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#138 [phi:print_word->print_byte#0] -- register_copy + //SEG139 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG130 print_word::@1 + //SEG140 print_word::@1 b1: - //SEG131 [62] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG141 [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG132 [63] call print_byte - //SEG133 [65] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG142 [69] call print_byte + //SEG143 [71] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG134 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG135 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG144 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG145 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG136 print_word::@return + //SEG146 print_word::@return breturn: - //SEG137 [64] return + //SEG147 [70] return rts } -//SEG138 print_byte +//SEG148 print_byte // Print a byte as HEX -// print_byte(byte zeropage(9) b) +// print_byte(byte zeropage($c) b) print_byte: { .label _0 = $3f .label _2 = $40 - .label b = 9 - //SEG139 [66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + .label b = $c + //SEG149 [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG140 [67] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG150 [73] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG141 [68] call print_char - //SEG142 [73] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG151 [74] call print_char + //SEG152 [61] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG143 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG144 [73] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG153 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy + //SEG154 [61] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG145 print_byte::@1 + //SEG155 print_byte::@1 b1: - //SEG146 [69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG156 [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG147 [70] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG157 [76] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG148 [71] call print_char - //SEG149 [73] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG158 [77] call print_char + //SEG159 [61] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG150 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG151 [73] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG160 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG161 [61] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG152 print_byte::@return + //SEG162 print_byte::@return breturn: - //SEG153 [72] return + //SEG163 [78] return rts } -//SEG154 print_char -// Print a single char -// print_char(byte zeropage($a) ch) -print_char: { - .label ch = $a - //SEG155 [74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 - lda ch - ldy #0 - sta (print_char_cursor),y - //SEG156 [75] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - jmp breturn - //SEG157 print_char::@return - breturn: - //SEG158 [76] return - rts -} -//SEG159 print_str +//SEG164 print_str // Print a zero-terminated string // print_str(byte* zeropage($d) str) print_str: { .label str = $d - //SEG160 [78] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG165 [80] 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: - //SEG161 [78] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG162 [78] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG166 [80] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#19 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG167 [80] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG163 print_str::@1 + //SEG168 print_str::@1 b1: - //SEG164 [79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG169 [81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG165 print_str::@return + //SEG170 print_str::@return breturn: - //SEG166 [80] return + //SEG171 [82] return rts - //SEG167 print_str::@2 + //SEG172 print_str::@2 b2: - //SEG168 [81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG173 [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG169 [82] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG174 [84] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG170 [83] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG175 [85] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG171 div16s +//SEG176 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. @@ -5404,38 +5441,38 @@ div16s: { .label dividend = $37 .label divisor = $39 .label return_2 = $3b - //SEG172 [84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + //SEG177 [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG173 [85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG178 [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG174 [86] call divr16s + //SEG179 [88] call divr16s jsr divr16s - //SEG175 [87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 + //SEG180 [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 lda divr16s.return sta divr16s.return_3 lda divr16s.return+1 sta divr16s.return_3+1 jmp b1 - //SEG176 div16s::@1 + //SEG181 div16s::@1 b1: - //SEG177 [88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 + //SEG182 [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 lda divr16s.return_3 sta return lda divr16s.return_3+1 sta return+1 jmp breturn - //SEG178 div16s::@return + //SEG183 div16s::@return breturn: - //SEG179 [89] return + //SEG184 [91] return rts } -//SEG180 divr16s +//SEG185 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -5458,87 +5495,87 @@ divr16s: { .label dividendu_8 = $f .label divisoru_4 = $11 .label divisoru_5 = $11 - //SEG181 [90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG186 [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 jmp b6 - //SEG182 divr16s::@6 + //SEG187 divr16s::@6 b6: - //SEG183 [91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 -- vwuz1=vwuz2 + //SEG188 [93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 -- vwuz1=vwuz2 lda dividend sta dividendu_8 lda dividend+1 sta dividendu_8+1 - //SEG184 [92] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] + //SEG189 [94] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] b2_from_b6: - //SEG185 [92] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy - //SEG186 [92] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuz1=vbuc1 + //SEG190 [94] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy + //SEG191 [94] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG187 divr16s::@2 + //SEG192 divr16s::@2 b2: - //SEG188 [93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG193 [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 jmp b7 - //SEG189 divr16s::@7 + //SEG194 divr16s::@7 b7: - //SEG190 [94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 + //SEG195 [96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 lda divisor sta divisoru_5 lda divisor+1 sta divisoru_5+1 - //SEG191 [95] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] + //SEG196 [97] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] b4_from_b3: b4_from_b7: - //SEG192 [95] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy - //SEG193 [95] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy + //SEG197 [97] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy + //SEG198 [97] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy jmp b4 - //SEG194 divr16s::@4 + //SEG199 divr16s::@4 b4: - //SEG195 [96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 + //SEG200 [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 lda dividendu_3 sta divr16u.dividend lda dividendu_3+1 sta divr16u.dividend+1 - //SEG196 [97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 + //SEG201 [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 lda divisoru_3 sta divr16u.divisor lda divisoru_3+1 sta divr16u.divisor+1 - //SEG197 [98] call divr16u - //SEG198 [114] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG202 [100] call divr16u + //SEG203 [116] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: - //SEG199 [114] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG200 [114] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG204 [116] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG205 [116] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy jsr divr16u - //SEG201 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG206 [101] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b9 - //SEG202 divr16s::@9 + //SEG207 divr16s::@9 b9: - //SEG203 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG208 [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta resultu lda divr16u.return_3+1 sta resultu+1 - //SEG204 [101] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuz1_eq_0_then_la1 + //SEG209 [103] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b5 jmp b8 - //SEG205 divr16s::@8 + //SEG210 divr16s::@8 b8: - //SEG206 [102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 + //SEG211 [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 lda rem16u sta _16 lda rem16u+1 sta _16+1 - //SEG207 [103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 -- vwsz1=_neg_vwsz2 + //SEG212 [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 -- vwsz1=_neg_vwsz2 sec lda #0 sbc _16 @@ -5546,7 +5583,7 @@ divr16s: { lda #0 sbc _16+1 sta rem16s+1 - //SEG208 [104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 + //SEG213 [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc resultu @@ -5554,32 +5591,32 @@ divr16s: { lda #0 sbc resultu+1 sta return+1 - //SEG209 [105] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] + //SEG214 [107] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] breturn_from_b5: breturn_from_b8: - //SEG210 [105] phi (signed word) rem16s#11 = (signed word~) rem16s#37 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy - //SEG211 [105] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@5/divr16s::@8->divr16s::@return#1] -- register_copy + //SEG215 [107] phi (signed word) rem16s#11 = (signed word~) rem16s#37 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy + //SEG216 [107] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@5/divr16s::@8->divr16s::@return#1] -- register_copy jmp breturn - //SEG212 divr16s::@return + //SEG217 divr16s::@return breturn: - //SEG213 [106] return + //SEG218 [108] return rts - //SEG214 divr16s::@5 + //SEG219 divr16s::@5 b5: - //SEG215 [107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 + //SEG220 [109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 lda resultu sta return lda resultu+1 sta return+1 - //SEG216 [108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 + //SEG221 [110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 lda rem16u sta rem16s lda rem16u+1 sta rem16s+1 jmp breturn_from_b5 - //SEG217 divr16s::@3 + //SEG222 divr16s::@3 b3: - //SEG218 [109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 + //SEG223 [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc divisor @@ -5587,19 +5624,19 @@ divr16s: { lda #0 sbc divisor+1 sta divisoru+1 - //SEG219 [110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG224 [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG220 [111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 -- vwuz1=vwuz2 + //SEG225 [113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 -- vwuz1=vwuz2 lda divisoru sta divisoru_4 lda divisoru+1 sta divisoru_4+1 jmp b4_from_b3 - //SEG221 divr16s::@1 + //SEG226 divr16s::@1 b1: - //SEG222 [112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz2 + //SEG227 [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz2 sec lda #0 sbc dividend @@ -5607,20 +5644,20 @@ divr16s: { lda #0 sbc dividend+1 sta dividendu+1 - //SEG223 [113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 -- vwuz1=vwuz2 + //SEG228 [115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 -- vwuz1=vwuz2 lda dividendu sta dividendu_7 lda dividendu+1 sta dividendu_7+1 - //SEG224 [92] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG229 [94] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG225 [92] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG226 [92] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuz1=vbuc1 + //SEG230 [94] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG231 [94] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG227 divr16u +//SEG232 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5637,67 +5674,67 @@ divr16u: { .label divisor = $18 .label return_2 = $74 .label return_3 = $49 - //SEG228 [115] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG233 [117] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG229 [115] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG234 [117] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG230 [115] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG235 [117] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG231 [115] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG232 [115] phi (word) divr16u::rem#5 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG236 [117] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG237 [117] phi (word) divr16u::rem#5 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 lda #0 sta rem lda #0 sta rem+1 jmp b1 - //SEG233 [115] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG238 [117] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG234 [115] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG235 [115] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG236 [115] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG237 [115] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG239 [117] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG240 [117] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG241 [117] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG242 [117] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG238 divr16u::@1 + //SEG243 divr16u::@1 b1: - //SEG239 [116] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG244 [118] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG240 [117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG245 [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG241 [118] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG246 [120] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG242 [119] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG247 [121] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG243 divr16u::@4 + //SEG248 divr16u::@4 b4: - //SEG244 [120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG249 [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG245 [121] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG250 [123] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG246 [121] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG251 [123] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG247 divr16u::@2 + //SEG252 divr16u::@2 b2: - //SEG248 [122] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG253 [124] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG249 [123] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG254 [125] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG250 [124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG255 [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -5707,14 +5744,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG251 divr16u::@5 + //SEG256 divr16u::@5 b5: - //SEG252 [125] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG257 [127] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG253 [126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG258 [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -5722,255 +5759,255 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG254 [127] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG259 [129] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG255 [127] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG256 [127] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG260 [129] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG261 [129] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG257 divr16u::@3 + //SEG262 divr16u::@3 b3: - //SEG258 [128] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG263 [130] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG259 [129] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG264 [131] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b3 jmp b6 - //SEG260 divr16u::@6 + //SEG265 divr16u::@6 b6: - //SEG261 [130] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG266 [132] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG262 divr16u::@return + //SEG267 divr16u::@return breturn: - //SEG263 [131] return + //SEG268 [133] return rts } -//SEG264 test_8s +//SEG269 test_8s test_8s: { .label dividend = $57 .label divisor = $58 .label res = $5c .label i = $21 - //SEG265 [133] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG270 [135] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] b1_from_test_8s: - //SEG266 [133] phi (byte) test_8s::i#10 = (byte) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG271 [135] phi (byte) test_8s::i#10 = (byte) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG267 [133] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] + //SEG272 [135] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] b1_from_b10: - //SEG268 [133] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy + //SEG273 [135] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy jmp b1 - //SEG269 test_8s::@1 + //SEG274 test_8s::@1 b1: - //SEG270 [134] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG275 [136] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG271 [135] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG276 [137] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG272 [136] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 + //SEG277 [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 lda dividend sta div8s.dividend - //SEG273 [137] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG278 [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta div8s.divisor - //SEG274 [138] call div8s + //SEG279 [140] call div8s jsr div8s - //SEG275 [139] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 -- vbsz1=vbsz2 + //SEG280 [141] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 -- vbsz1=vbsz2 lda div8s.return sta div8s.return_3 jmp b2 - //SEG276 test_8s::@2 + //SEG281 test_8s::@2 b2: - //SEG277 [140] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsz2 + //SEG282 [142] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsz2 lda div8s.return_3 sta res - //SEG278 [141] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 + //SEG283 [143] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 lda dividend sta print_sbyte.b - //SEG279 [142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG284 [144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG280 [143] call print_sbyte - //SEG281 [161] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] + //SEG285 [145] call print_sbyte + //SEG286 [163] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] print_sbyte_from_b2: - //SEG282 [161] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#167 [phi:test_8s::@2->print_sbyte#0] -- register_copy - //SEG283 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy + //SEG287 [163] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#168 [phi:test_8s::@2->print_sbyte#0] -- register_copy + //SEG288 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG284 [144] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] + //SEG289 [146] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] b3_from_b2: jmp b3 - //SEG285 test_8s::@3 + //SEG290 test_8s::@3 b3: - //SEG286 [145] call print_str - //SEG287 [77] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] + //SEG291 [147] call print_str + //SEG292 [79] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] print_str_from_b3: - //SEG288 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG293 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG289 test_8s::@4 + //SEG294 test_8s::@4 b4: - //SEG290 [146] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG295 [148] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG291 [147] call print_sbyte - //SEG292 [161] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] + //SEG296 [149] call print_sbyte + //SEG297 [163] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] print_sbyte_from_b4: - //SEG293 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy - //SEG294 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy + //SEG298 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@4->print_sbyte#0] -- register_copy + //SEG299 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG295 [148] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] + //SEG300 [150] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] b5_from_b4: jmp b5 - //SEG296 test_8s::@5 + //SEG301 test_8s::@5 b5: - //SEG297 [149] call print_str - //SEG298 [77] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] + //SEG302 [151] call print_str + //SEG303 [79] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] print_str_from_b5: - //SEG299 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG304 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG300 test_8s::@6 + //SEG305 test_8s::@6 b6: - //SEG301 [150] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG306 [152] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG302 [151] call print_sbyte - //SEG303 [161] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] + //SEG307 [153] call print_sbyte + //SEG308 [163] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] print_sbyte_from_b6: - //SEG304 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy - //SEG305 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy + //SEG309 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@6->print_sbyte#0] -- register_copy + //SEG310 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG306 [152] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] + //SEG311 [154] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] b7_from_b6: jmp b7 - //SEG307 test_8s::@7 + //SEG312 test_8s::@7 b7: - //SEG308 [153] call print_str - //SEG309 [77] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] + //SEG313 [155] call print_str + //SEG314 [79] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] print_str_from_b7: - //SEG310 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG315 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG311 test_8s::@8 + //SEG316 test_8s::@8 b8: - //SEG312 [154] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsz2 + //SEG317 [156] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsz2 lda rem8s sta print_sbyte.b - //SEG313 [155] call print_sbyte - //SEG314 [161] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] + //SEG318 [157] call print_sbyte + //SEG319 [163] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] print_sbyte_from_b8: - //SEG315 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy - //SEG316 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy + //SEG320 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@8->print_sbyte#0] -- register_copy + //SEG321 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG317 [156] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] + //SEG322 [158] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] b9_from_b8: jmp b9 - //SEG318 test_8s::@9 + //SEG323 test_8s::@9 b9: - //SEG319 [157] call print_ln - //SEG320 [45] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] + //SEG324 [159] call print_ln + //SEG325 [45] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] print_ln_from_b9: - //SEG321 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy + //SEG326 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG322 test_8s::@10 + //SEG327 test_8s::@10 b10: - //SEG323 [158] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG328 [160] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG324 [159] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG329 [161] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG325 test_8s::@return + //SEG330 test_8s::@return breturn: - //SEG326 [160] return + //SEG331 [162] return rts dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG327 print_sbyte +//SEG332 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage($22) b) print_sbyte: { .label b = $22 - //SEG328 [162] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG333 [164] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG329 [163] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG334 [165] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG330 print_sbyte::@3 + //SEG335 print_sbyte::@3 b3: - //SEG331 [164] call print_char - //SEG332 [73] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG336 [166] call print_char + //SEG337 [61] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG333 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG334 [73] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG338 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#135 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG339 [61] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG335 [165] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG340 [167] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG336 [165] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG341 [167] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG337 print_sbyte::@2 + //SEG342 print_sbyte::@2 b2: - //SEG338 [166] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 -- vbuz1=vbuz2 + //SEG343 [168] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG339 [167] call print_byte - //SEG340 [65] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG344 [169] call print_byte + //SEG345 [71] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG341 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG342 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG346 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG347 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG343 print_sbyte::@return + //SEG348 print_sbyte::@return breturn: - //SEG344 [168] return + //SEG349 [170] return rts - //SEG345 [169] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG350 [171] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG346 print_sbyte::@1 + //SEG351 print_sbyte::@1 b1: - //SEG347 [170] call print_char - //SEG348 [73] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG352 [172] call print_char + //SEG353 [61] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG349 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG350 [73] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG354 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#135 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG355 [61] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG351 print_sbyte::@4 + //SEG356 print_sbyte::@4 b4: - //SEG352 [171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG357 [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -5978,7 +6015,7 @@ print_sbyte: { sta b jmp b2_from_b4 } -//SEG353 div8s +//SEG358 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. @@ -6002,139 +6039,139 @@ div8s: { .label dividendu_8 = $23 .label divisoru_4 = $24 .label divisoru_5 = $24 - //SEG354 [172] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsz1_lt_0_then_la1 + //SEG359 [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsz1_lt_0_then_la1 lda dividend bmi b1 jmp b6 - //SEG355 div8s::@6 + //SEG360 div8s::@6 b6: - //SEG356 [173] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 -- vbuz1=vbuz2 + //SEG361 [175] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 -- vbuz1=vbuz2 lda dividend sta dividendu_8 - //SEG357 [174] phi from div8s::@6 to div8s::@2 [phi:div8s::@6->div8s::@2] + //SEG362 [176] phi from div8s::@6 to div8s::@2 [phi:div8s::@6->div8s::@2] b2_from_b6: - //SEG358 [174] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@6->div8s::@2#0] -- register_copy - //SEG359 [174] phi (byte) div8s::neg#3 = (byte) 0 [phi:div8s::@6->div8s::@2#1] -- vbuz1=vbuc1 + //SEG363 [176] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@6->div8s::@2#0] -- register_copy + //SEG364 [176] phi (byte) div8s::neg#3 = (byte) 0 [phi:div8s::@6->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG360 div8s::@2 + //SEG365 div8s::@2 b2: - //SEG361 [175] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsz1_lt_0_then_la1 + //SEG366 [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsz1_lt_0_then_la1 lda divisor bmi b3 jmp b7 - //SEG362 div8s::@7 + //SEG367 div8s::@7 b7: - //SEG363 [176] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuz1=vbuz2 + //SEG368 [178] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuz1=vbuz2 lda divisor sta divisoru_5 - //SEG364 [177] phi from div8s::@3 div8s::@7 to div8s::@4 [phi:div8s::@3/div8s::@7->div8s::@4] + //SEG369 [179] phi from div8s::@3 div8s::@7 to div8s::@4 [phi:div8s::@3/div8s::@7->div8s::@4] b4_from_b3: b4_from_b7: - //SEG365 [177] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@7->div8s::@4#0] -- register_copy - //SEG366 [177] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@7->div8s::@4#1] -- register_copy + //SEG370 [179] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@7->div8s::@4#0] -- register_copy + //SEG371 [179] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@7->div8s::@4#1] -- register_copy jmp b4 - //SEG367 div8s::@4 + //SEG372 div8s::@4 b4: - //SEG368 [178] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuz1=vbuz2 + //SEG373 [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuz1=vbuz2 lda dividendu_3 sta div8u.dividend - //SEG369 [179] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 -- vbuz1=vbuz2 + //SEG374 [181] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 -- vbuz1=vbuz2 lda divisoru_3 sta div8u.divisor - //SEG370 [180] call div8u - //SEG371 [196] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG375 [182] call div8u + //SEG376 [198] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] div8u_from_b4: - //SEG372 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG373 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG377 [198] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG378 [198] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG374 [181] (byte) div8u::return#2 ← (byte) div8u::return#0 -- vbuz1=vbuz2 + //SEG379 [183] (byte) div8u::return#2 ← (byte) div8u::return#0 -- vbuz1=vbuz2 lda div8u.return sta div8u.return_2 jmp b9 - //SEG375 div8s::@9 + //SEG380 div8s::@9 b9: - //SEG376 [182] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuz1=vbuz2 + //SEG381 [184] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuz1=vbuz2 lda div8u.return_2 sta resultu - //SEG377 [183] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 -- vbuz1_eq_0_then_la1 + //SEG382 [185] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b5 jmp b8 - //SEG378 div8s::@8 + //SEG383 div8s::@8 b8: - //SEG379 [184] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 + //SEG384 [186] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 lda rem8u sta _11 - //SEG380 [185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 -- vbsz1=_neg_vbsz2 + //SEG385 [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 -- vbsz1=_neg_vbsz2 lda _11 eor #$ff clc adc #1 sta rem8s - //SEG381 [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsz1=_neg_vbsz2 + //SEG386 [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsz1=_neg_vbsz2 lda resultu eor #$ff clc adc #1 sta return - //SEG382 [187] phi from div8s::@5 div8s::@8 to div8s::@return [phi:div8s::@5/div8s::@8->div8s::@return] + //SEG387 [189] phi from div8s::@5 div8s::@8 to div8s::@return [phi:div8s::@5/div8s::@8->div8s::@return] breturn_from_b5: breturn_from_b8: - //SEG383 [187] phi (signed byte) rem8s#3 = (signed byte~) rem8s#33 [phi:div8s::@5/div8s::@8->div8s::@return#0] -- register_copy - //SEG384 [187] phi (signed byte) div8s::return#2 = (signed byte~) div8s::return#7 [phi:div8s::@5/div8s::@8->div8s::@return#1] -- register_copy + //SEG388 [189] phi (signed byte) rem8s#3 = (signed byte~) rem8s#33 [phi:div8s::@5/div8s::@8->div8s::@return#0] -- register_copy + //SEG389 [189] phi (signed byte) div8s::return#2 = (signed byte~) div8s::return#7 [phi:div8s::@5/div8s::@8->div8s::@return#1] -- register_copy jmp breturn - //SEG385 div8s::@return + //SEG390 div8s::@return breturn: - //SEG386 [188] return + //SEG391 [190] return rts - //SEG387 div8s::@5 + //SEG392 div8s::@5 b5: - //SEG388 [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsz1=vbsz2 + //SEG393 [191] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsz1=vbsz2 lda resultu sta return - //SEG389 [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 + //SEG394 [192] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 lda rem8u sta rem8s jmp breturn_from_b5 - //SEG390 div8s::@3 + //SEG395 div8s::@3 b3: - //SEG391 [191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsz1=_neg_vbsz2 + //SEG396 [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsz1=_neg_vbsz2 lda divisor eor #$ff clc adc #1 sta divisoru - //SEG392 [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG397 [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG393 [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 -- vbuz1=vbuz2 + //SEG398 [195] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 -- vbuz1=vbuz2 lda divisoru sta divisoru_4 jmp b4_from_b3 - //SEG394 div8s::@1 + //SEG399 div8s::@1 b1: - //SEG395 [194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsz1=_neg_vbsz2 + //SEG400 [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsz1=_neg_vbsz2 lda dividend eor #$ff clc adc #1 sta dividendu - //SEG396 [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuz1=vbuz2 + //SEG401 [197] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuz1=vbuz2 lda dividendu sta dividendu_7 - //SEG397 [174] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG402 [176] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] b2_from_b1: - //SEG398 [174] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG399 [174] phi (byte) div8s::neg#3 = (byte) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG403 [176] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG404 [176] phi (byte) div8s::neg#3 = (byte) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG400 div8u +//SEG405 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u @@ -6146,32 +6183,32 @@ div8u: { .label divisor = $29 .label return_2 = $5d .label return_3 = $7a - //SEG401 [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuz2 + //SEG406 [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuz2 lda dividend sta divr8u.dividend - //SEG402 [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuz2 + //SEG407 [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuz2 lda divisor sta divr8u.divisor - //SEG403 [199] call divr8u - //SEG404 [203] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG408 [201] call divr8u + //SEG409 [205] phi from div8u to divr8u [phi:div8u->divr8u] divr8u_from_div8u: jsr divr8u - //SEG405 [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuz1=vbuz2 + //SEG410 [202] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuz1=vbuz2 lda divr8u.return_1 sta divr8u.return jmp b1 - //SEG406 div8u::@1 + //SEG411 div8u::@1 b1: - //SEG407 [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 -- vbuz1=vbuz2 + //SEG412 [203] (byte) div8u::return#0 ← (byte) divr8u::return#0 -- vbuz1=vbuz2 lda divr8u.return sta return jmp breturn - //SEG408 div8u::@return + //SEG413 div8u::@return breturn: - //SEG409 [202] return + //SEG414 [204] return rts } -//SEG410 divr8u +//SEG415 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u @@ -6186,284 +6223,284 @@ divr8u: { .label quotient = $2c .label i = $2d .label return_1 = $2c - //SEG411 [204] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG416 [206] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] b1_from_divr8u: - //SEG412 [204] phi (byte) divr8u::i#2 = (byte) 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1 + //SEG417 [206] phi (byte) divr8u::i#2 = (byte) 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG413 [204] phi (byte) divr8u::quotient#3 = (byte) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG418 [206] phi (byte) divr8u::quotient#3 = (byte) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 lda #0 sta quotient - //SEG414 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG415 [204] phi (byte) divr8u::rem#4 = (byte) 0 [phi:divr8u->divr8u::@1#3] -- vbuz1=vbuc1 + //SEG419 [206] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG420 [206] phi (byte) divr8u::rem#4 = (byte) 0 [phi:divr8u->divr8u::@1#3] -- vbuz1=vbuc1 lda #0 sta rem jmp b1 - //SEG416 [204] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG421 [206] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] b1_from_b3: - //SEG417 [204] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG418 [204] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG419 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG420 [204] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG422 [206] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG423 [206] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG424 [206] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG425 [206] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy jmp b1 - //SEG421 divr8u::@1 + //SEG426 divr8u::@1 b1: - //SEG422 [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 -- vbuz1=vbuz1_rol_1 + //SEG427 [207] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 -- vbuz1=vbuz1_rol_1 asl rem - //SEG423 [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG428 [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and dividend sta _1 - //SEG424 [207] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 -- vbuz1_eq_0_then_la1 + //SEG429 [209] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b2_from_b1 jmp b4 - //SEG425 divr8u::@4 + //SEG430 divr8u::@4 b4: - //SEG426 [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 -- vbuz1=vbuz1_bor_vbuc1 + //SEG431 [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 -- vbuz1=vbuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG427 [209] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG432 [211] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] b2_from_b1: b2_from_b4: - //SEG428 [209] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG433 [211] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy jmp b2 - //SEG429 divr8u::@2 + //SEG434 divr8u::@2 b2: - //SEG430 [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 + //SEG435 [212] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG431 [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 -- vbuz1=vbuz1_rol_1 + //SEG436 [213] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG432 [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG437 [214] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuz1_lt_vbuz2_then_la1 lda rem cmp divisor bcc b3_from_b2 jmp b5 - //SEG433 divr8u::@5 + //SEG438 divr8u::@5 b5: - //SEG434 [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG439 [215] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG435 [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuz1=vbuz1_minus_vbuz2 + //SEG440 [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuz1=vbuz1_minus_vbuz2 lda rem sec sbc divisor sta rem - //SEG436 [215] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG441 [217] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] b3_from_b2: b3_from_b5: - //SEG437 [215] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG438 [215] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG442 [217] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG443 [217] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy jmp b3 - //SEG439 divr8u::@3 + //SEG444 divr8u::@3 b3: - //SEG440 [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuz1=_inc_vbuz1 + //SEG445 [218] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG441 [217] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG446 [219] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b1_from_b3 jmp b6 - //SEG442 divr8u::@6 + //SEG447 divr8u::@6 b6: - //SEG443 [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuz1=vbuz2 + //SEG448 [220] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuz1=vbuz2 lda rem sta rem8u jmp breturn - //SEG444 divr8u::@return + //SEG449 divr8u::@return breturn: - //SEG445 [219] return + //SEG450 [221] return rts } -//SEG446 test_16u +//SEG451 test_16u test_16u: { .label _11 = $67 .label dividend = $68 .label divisor = $6a .label res = $72 .label i = $2e - //SEG447 [221] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG452 [223] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] b1_from_test_16u: - //SEG448 [221] phi (byte) test_16u::i#10 = (byte) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG453 [223] phi (byte) test_16u::i#10 = (byte) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG449 [221] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] + //SEG454 [223] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] b1_from_b10: - //SEG450 [221] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy + //SEG455 [223] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy jmp b1 - //SEG451 test_16u::@1 + //SEG456 test_16u::@1 b1: - //SEG452 [222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG457 [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _11 - //SEG453 [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG458 [225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuz2 ldy _11 lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG454 [224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG459 [226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuz2 ldy _11 lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG455 [225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 + //SEG460 [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta div16u.dividend lda dividend+1 sta div16u.dividend+1 - //SEG456 [226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG461 [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta div16u.divisor lda divisor+1 sta div16u.divisor+1 - //SEG457 [227] call div16u + //SEG462 [229] call div16u jsr div16u - //SEG458 [228] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 + //SEG463 [230] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 lda div16u.return sta div16u.return_2 lda div16u.return+1 sta div16u.return_2+1 jmp b2 - //SEG459 test_16u::@2 + //SEG464 test_16u::@2 b2: - //SEG460 [229] (word) test_16u::res#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 + //SEG465 [231] (word) test_16u::res#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 lda div16u.return_2 sta res lda div16u.return_2+1 sta res+1 - //SEG461 [230] (word) print_word::w#1 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 + //SEG466 [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta print_word.w lda dividend+1 sta print_word.w+1 - //SEG462 [231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG467 [233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG463 [232] call print_word - //SEG464 [59] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] + //SEG468 [234] call print_word + //SEG469 [65] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] print_word_from_b2: - //SEG465 [59] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#172 [phi:test_16u::@2->print_word#0] -- register_copy - //SEG466 [59] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy + //SEG470 [65] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#173 [phi:test_16u::@2->print_word#0] -- register_copy + //SEG471 [65] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy jsr print_word - //SEG467 [233] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] + //SEG472 [235] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] b3_from_b2: jmp b3 - //SEG468 test_16u::@3 + //SEG473 test_16u::@3 b3: - //SEG469 [234] call print_str - //SEG470 [77] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] + //SEG474 [236] call print_str + //SEG475 [79] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] print_str_from_b3: - //SEG471 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG476 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG472 test_16u::@4 + //SEG477 test_16u::@4 b4: - //SEG473 [235] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG478 [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG474 [236] call print_word - //SEG475 [59] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] + //SEG479 [238] call print_word + //SEG480 [65] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] print_word_from_b4: - //SEG476 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy - //SEG477 [59] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy + //SEG481 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@4->print_word#0] -- register_copy + //SEG482 [65] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy jsr print_word - //SEG478 [237] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] + //SEG483 [239] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] b5_from_b4: jmp b5 - //SEG479 test_16u::@5 + //SEG484 test_16u::@5 b5: - //SEG480 [238] call print_str - //SEG481 [77] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] + //SEG485 [240] call print_str + //SEG486 [79] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] print_str_from_b5: - //SEG482 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG487 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG483 test_16u::@6 + //SEG488 test_16u::@6 b6: - //SEG484 [239] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG489 [241] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG485 [240] call print_word - //SEG486 [59] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] + //SEG490 [242] call print_word + //SEG491 [65] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] print_word_from_b6: - //SEG487 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy - //SEG488 [59] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy + //SEG492 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@6->print_word#0] -- register_copy + //SEG493 [65] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy jsr print_word - //SEG489 [241] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] + //SEG494 [243] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] b7_from_b6: jmp b7 - //SEG490 test_16u::@7 + //SEG495 test_16u::@7 b7: - //SEG491 [242] call print_str - //SEG492 [77] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] + //SEG496 [244] call print_str + //SEG497 [79] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] print_str_from_b7: - //SEG493 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG498 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG494 test_16u::@8 + //SEG499 test_16u::@8 b8: - //SEG495 [243] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG500 [245] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG496 [244] call print_word - //SEG497 [59] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] + //SEG501 [246] call print_word + //SEG502 [65] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] print_word_from_b8: - //SEG498 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy - //SEG499 [59] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy + //SEG503 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@8->print_word#0] -- register_copy + //SEG504 [65] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy jsr print_word - //SEG500 [245] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] + //SEG505 [247] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] b9_from_b8: jmp b9 - //SEG501 test_16u::@9 + //SEG506 test_16u::@9 b9: - //SEG502 [246] call print_ln - //SEG503 [45] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] + //SEG507 [248] call print_ln + //SEG508 [45] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] print_ln_from_b9: - //SEG504 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy + //SEG509 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG505 test_16u::@10 + //SEG510 test_16u::@10 b10: - //SEG506 [247] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 + //SEG511 [249] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG507 [248] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG512 [250] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG508 test_16u::@return + //SEG513 test_16u::@return breturn: - //SEG509 [249] return + //SEG514 [251] return rts dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG510 div16u +//SEG515 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -6474,249 +6511,249 @@ div16u: { .label dividend = $6c .label divisor = $6e .label return_2 = $70 - //SEG511 [250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + //SEG516 [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG512 [251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 -- vwuz1=vwuz2 + //SEG517 [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta divr16u.divisor lda divisor+1 sta divr16u.divisor+1 - //SEG513 [252] call divr16u - //SEG514 [114] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG518 [254] call divr16u + //SEG519 [116] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: - //SEG515 [114] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG516 [114] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG520 [116] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG521 [116] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy jsr divr16u - //SEG517 [253] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG522 [255] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b1 - //SEG518 div16u::@1 + //SEG523 div16u::@1 b1: - //SEG519 [254] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG524 [256] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta return lda divr16u.return_2+1 sta return+1 jmp breturn - //SEG520 div16u::@return + //SEG525 div16u::@return breturn: - //SEG521 [255] return + //SEG526 [257] return rts } -//SEG522 test_8u +//SEG527 test_8u test_8u: { .label dividend = $78 .label divisor = $79 .label res = $7b .label i = $2f - //SEG523 [257] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG528 [259] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] b1_from_test_8u: - //SEG524 [257] phi (byte*) print_line_cursor#41 = (byte*) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG529 [259] phi (byte*) print_line_cursor#41 = (byte*) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG525 [257] phi (byte*) print_char_cursor#138 = (byte*) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG530 [259] phi (byte*) print_char_cursor#141 = (byte*) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG526 [257] phi (byte) test_8u::i#10 = (byte) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG531 [259] phi (byte) test_8u::i#10 = (byte) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG527 test_8u::@1 + //SEG532 test_8u::@1 b1: - //SEG528 [258] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG533 [260] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG529 [259] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG534 [261] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG530 [260] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 + //SEG535 [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 lda dividend sta div8u.dividend - //SEG531 [261] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG536 [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta div8u.divisor - //SEG532 [262] call div8u - //SEG533 [196] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG537 [264] call div8u + //SEG538 [198] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] div8u_from_b1: - //SEG534 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG535 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG539 [198] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG540 [198] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG536 [263] (byte) div8u::return#3 ← (byte) div8u::return#0 -- vbuz1=vbuz2 + //SEG541 [265] (byte) div8u::return#3 ← (byte) div8u::return#0 -- vbuz1=vbuz2 lda div8u.return sta div8u.return_3 jmp b2 - //SEG537 test_8u::@2 + //SEG542 test_8u::@2 b2: - //SEG538 [264] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuz2 + //SEG543 [266] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuz2 lda div8u.return_3 sta res - //SEG539 [265] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 + //SEG544 [267] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 lda dividend sta print_byte.b - //SEG540 [266] call print_byte - //SEG541 [65] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] + //SEG545 [268] call print_byte + //SEG546 [71] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] print_byte_from_b2: - //SEG542 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy - //SEG543 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy + //SEG547 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#141 [phi:test_8u::@2->print_byte#0] -- register_copy + //SEG548 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy jsr print_byte - //SEG544 [267] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] + //SEG549 [269] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] b3_from_b2: jmp b3 - //SEG545 test_8u::@3 + //SEG550 test_8u::@3 b3: - //SEG546 [268] call print_str - //SEG547 [77] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] + //SEG551 [270] call print_str + //SEG552 [79] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] print_str_from_b3: - //SEG548 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG553 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG549 test_8u::@4 + //SEG554 test_8u::@4 b4: - //SEG550 [269] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG555 [271] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG551 [270] call print_byte - //SEG552 [65] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] + //SEG556 [272] call print_byte + //SEG557 [71] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] print_byte_from_b4: - //SEG553 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy - //SEG554 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy + //SEG558 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@4->print_byte#0] -- register_copy + //SEG559 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy jsr print_byte - //SEG555 [271] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] + //SEG560 [273] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] b5_from_b4: jmp b5 - //SEG556 test_8u::@5 + //SEG561 test_8u::@5 b5: - //SEG557 [272] call print_str - //SEG558 [77] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] + //SEG562 [274] call print_str + //SEG563 [79] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] print_str_from_b5: - //SEG559 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG564 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG560 test_8u::@6 + //SEG565 test_8u::@6 b6: - //SEG561 [273] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG566 [275] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG562 [274] call print_byte - //SEG563 [65] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] + //SEG567 [276] call print_byte + //SEG568 [71] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] print_byte_from_b6: - //SEG564 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy - //SEG565 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy + //SEG569 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@6->print_byte#0] -- register_copy + //SEG570 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy jsr print_byte - //SEG566 [275] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] + //SEG571 [277] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] b7_from_b6: jmp b7 - //SEG567 test_8u::@7 + //SEG572 test_8u::@7 b7: - //SEG568 [276] call print_str - //SEG569 [77] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] + //SEG573 [278] call print_str + //SEG574 [79] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] print_str_from_b7: - //SEG570 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG575 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG571 test_8u::@8 + //SEG576 test_8u::@8 b8: - //SEG572 [277] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuz2 + //SEG577 [279] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuz2 lda rem8u sta print_byte.b - //SEG573 [278] call print_byte - //SEG574 [65] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] + //SEG578 [280] call print_byte + //SEG579 [71] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] print_byte_from_b8: - //SEG575 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy - //SEG576 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy + //SEG580 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@8->print_byte#0] -- register_copy + //SEG581 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy jsr print_byte - //SEG577 [279] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] + //SEG582 [281] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] b9_from_b8: jmp b9 - //SEG578 test_8u::@9 + //SEG583 test_8u::@9 b9: - //SEG579 [280] call print_ln - //SEG580 [45] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] + //SEG584 [282] call print_ln + //SEG585 [45] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] print_ln_from_b9: - //SEG581 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy + //SEG586 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG582 test_8u::@10 + //SEG587 test_8u::@10 b10: - //SEG583 [281] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG588 [283] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG584 [282] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG589 [284] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b11 jmp breturn - //SEG585 test_8u::@return + //SEG590 test_8u::@return breturn: - //SEG586 [283] return + //SEG591 [285] return rts - //SEG587 test_8u::@11 + //SEG592 test_8u::@11 b11: - //SEG588 [284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG593 [286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG589 [257] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] + //SEG594 [259] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] b1_from_b11: - //SEG590 [257] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy - //SEG591 [257] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy - //SEG592 [257] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy + //SEG595 [259] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy + //SEG596 [259] phi (byte*) print_char_cursor#141 = (byte*~) print_char_cursor#190 [phi:test_8u::@11->test_8u::@1#1] -- register_copy + //SEG597 [259] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy jmp b1 dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG593 print_cls +//SEG598 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $30 - //SEG594 [286] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG599 [288] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG595 [286] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG600 [288] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG596 [286] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG601 [288] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG597 [286] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG602 [288] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG598 print_cls::@1 + //SEG603 print_cls::@1 b1: - //SEG599 [287] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG604 [289] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG600 [288] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG605 [290] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG601 [289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG606 [291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -6724,12 +6761,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG602 print_cls::@return + //SEG607 print_cls::@return breturn: - //SEG603 [290] return + //SEG608 [292] return rts } -//SEG604 File Data +//SEG609 File Data print_hextab: .text "0123456789abcdef" str: .text " / @" str1: .text " = @" @@ -6746,32 +6783,21 @@ Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divis Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#161 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#161 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:157 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:246 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:280 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#164 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#164 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ test_8s::i#10 test_8s::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ test_16u::i#10 test_16u::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ test_8u::i#10 test_8u::i#1 ] -Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:157 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:246 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:280 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#0 ] ) always clobbers reg byte a -Statement [60] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:57 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:57 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:57 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:57 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:232 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:244 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a -Statement [62] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:57 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:57 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:57 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:57 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:232 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:244 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:232::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:236::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:240::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:244::print_byte:61 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:232::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:236::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:240::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:244::print_byte:63 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:143::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:147::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:151::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:155::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:266 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:278 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ test_8s::divisor#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ test_8s::res#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ rem8s#3 rem8s#2 rem8s#33 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ rem8u#17 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:121 [ test_8u::divisor#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ test_8u::res#0 ] -Statement [69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:232::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:236::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:240::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:244::print_byte:61 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:232::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:236::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:240::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:244::print_byte:63 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:143::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:147::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:151::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:155::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:266 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:278 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:61::print_char:68 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:63::print_char:68 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:266::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:270::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:274::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:278::print_char:68 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:61::print_char:71 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:63::print_char:71 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:266::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:270::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:274::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:278::print_char:71 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_char:164 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_char:164 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_char:164 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_char:164 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_char:170 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_char:170 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_char:170 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_char:170 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y +Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] ) always clobbers reg byte a +Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a +Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a +Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:46 [ test_16u::i#10 test_16u::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ test_8s::i#10 test_8s::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:88 [ test_8s::divisor#0 ] @@ -6782,78 +6808,89 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:47 [ t Removing always clobbered register reg byte y as potential for zp ZP_BYTE:121 [ test_8u::divisor#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:123 [ test_8u::res#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Statement [79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a +Statement [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ) always clobbers reg byte a +Statement [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a +Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ test_8s::divisor#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ test_8s::res#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ rem8s#3 rem8s#2 rem8s#33 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ rem8u#17 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:121 [ test_8u::divisor#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ test_8u::res#0 ] +Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a +Statement [81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a +Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a +Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a +Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a +Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] -Statement [94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a -Statement [103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a -Statement [113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a +Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a +Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a +Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a +Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a +Statement [109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a +Statement [110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a +Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a +Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a +Statement [113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a +Statement [115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a +Statement [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ divr16u::i#2 divr16u::i#1 ] -Statement [120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [130] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ) always clobbers reg byte a +Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#168 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#168 rem8s#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Statement [171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:143 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:147 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:151 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:155 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a +Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ test_8s::dividend#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:94 [ div8s::resultu#0 ] -Statement [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a +Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a +Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -Statement [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a +Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:96 [ div8s::divisoru#1 ] -Statement [194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a +Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:90 [ div8s::divisor#0 ] -Statement [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:138::div8u:180::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:262::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a +Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ divr8u::divisor#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ divr8u::i#2 divr8u::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:120 [ test_8u::dividend#0 ] -Statement [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:138::div8u:180::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:262::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a -Statement [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a +Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a +Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a +Statement [225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:103 [ test_16u::$11 ] -Statement [224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [228] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [229] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [230] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [235] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [239] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [243] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [253] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [254] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a -Statement [287] *((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 [289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a +Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a +Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a +Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#173 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#173 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a +Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a +Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a +Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a +Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a +Statement [286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#190 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#190 ] ) always clobbers reg byte a +Statement [289] *((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 [291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [17] (byte~) test_16s::$11 ← (byte) test_16s::i#10 << (byte) 1 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ) always clobbers reg byte a Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [19] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a @@ -6862,79 +6899,79 @@ Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divis Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#161 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#161 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:157 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:246 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:280 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:157 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:246 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:280 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#0 ] ) always clobbers reg byte a -Statement [60] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:57 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:57 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:57 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:57 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:232 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:244 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a -Statement [62] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:57 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:57 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:57 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:57 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:232 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:244 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:232::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:236::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:240::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:244::print_byte:61 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:232::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:236::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:240::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:244::print_byte:63 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:143::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:147::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:151::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:155::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:266 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:278 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a -Statement [69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:232::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:236::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:240::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:244::print_byte:61 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:232::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:236::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:240::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:244::print_byte:63 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:143::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:147::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:151::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:155::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:266 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:278 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:61::print_char:68 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:63::print_char:68 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:266::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:270::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:274::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:278::print_char:68 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:61::print_char:71 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:63::print_char:71 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:266::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:270::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:274::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:278::print_char:71 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_char:164 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_char:164 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_char:164 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_char:164 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_char:170 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_char:170 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_char:170 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_char:170 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y -Statement [79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a -Statement [94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a -Statement [103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a -Statement [113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [130] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ) always clobbers reg byte a -Statement [171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:143 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:147 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:151 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:155 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a -Statement [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a -Statement [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a -Statement [194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a -Statement [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:138::div8u:180::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:262::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a +Statement [26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#164 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#164 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] ) always clobbers reg byte a +Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a +Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a +Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ) always clobbers reg byte a +Statement [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a +Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ) always clobbers reg byte a +Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a +Statement [81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a +Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a +Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a +Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a +Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a +Statement [96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a +Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a +Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a +Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a +Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a +Statement [109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a +Statement [110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a +Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a +Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a +Statement [113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a +Statement [115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a +Statement [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#168 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#168 rem8s#3 ] ) always clobbers reg byte a +Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a +Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a +Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a +Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a +Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a +Statement [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] -Statement [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:138::div8u:180::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:262::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a -Statement [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:138::div8u:180::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:262::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a -Statement [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a -Statement [224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [228] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [229] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [230] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [235] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [239] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [243] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [253] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [254] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a -Statement [287] *((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 [289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a +Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a +Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a +Statement [225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a +Statement [226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a +Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a +Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a +Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#173 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#173 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a +Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a +Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a +Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a +Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a +Statement [286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#190 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#190 ] ) always clobbers reg byte a +Statement [289] *((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 [291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [17] (byte~) test_16s::$11 ← (byte) test_16s::i#10 << (byte) 1 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 print_line_cursor#1 ] ) always clobbers reg byte a Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$11 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [19] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte~) test_16s::$11) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a @@ -6943,85 +6980,85 @@ Statement [21] (signed word) div16s::divisor#0 ← (signed word) test_16s::divis Statement [23] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a Statement [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a Statement [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#161 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#161 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:157 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:246 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:280 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:157 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:246 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:280 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#0 ] ) always clobbers reg byte a -Statement [60] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:57 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:57 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:57 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:57 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:232 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:244 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a -Statement [62] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:57 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:57 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:57 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:57 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:232 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:244 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:232::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:236::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:240::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:244::print_byte:61 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:232::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:236::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:240::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:244::print_byte:63 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:143::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:147::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:151::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:155::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:266 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:278 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a -Statement [69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:232::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:236::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:240::print_byte:61 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:244::print_byte:61 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:232::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:236::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:240::print_byte:63 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:244::print_byte:63 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:143::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:147::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:151::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:155::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:266 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:278 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61::print_char:68 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:61::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:61::print_char:68 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63::print_char:68 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:63::print_char:68 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:63::print_char:68 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_byte:167::print_char:68 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:266::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:270::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:274::print_char:68 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:278::print_char:68 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:61::print_char:71 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:61::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:61::print_char:71 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:27::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:31::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:35::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:39::print_word:57::print_byte:63::print_char:71 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:232::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:236::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:240::print_byte:63::print_char:71 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:244::print_byte:63::print_char:71 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_byte:167::print_char:71 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:266::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:270::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:274::print_char:71 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:278::print_char:71 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_char:164 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_char:164 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_char:164 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_char:164 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:143::print_char:170 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:147::print_char:170 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:151::print_char:170 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:155::print_char:170 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y -Statement [79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a -Statement [94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a -Statement [103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a -Statement [111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a -Statement [113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:86 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [130] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:86::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:227::divr16u:252 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#167 rem8s#3 ] ) always clobbers reg byte a -Statement [171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:143 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:147 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:151 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:155 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a -Statement [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a -Statement [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a -Statement [194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:138 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a -Statement [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:138::div8u:180::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:262::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a -Statement [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:138::div8u:180::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:262::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a -Statement [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:138::div8u:180::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:262::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a -Statement [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a -Statement [224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [228] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [229] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [230] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#172 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [235] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [239] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [243] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [253] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [254] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:227 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a -Statement [287] *((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 [289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#164 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#164 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [30] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [34] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [38] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#130 ] ) always clobbers reg byte a +Statement [47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#19 ] ( main:2::test_16s:13::print_ln:41 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8s:11::print_ln:159 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_16u:9::print_ln:248 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#19 ] main:2::test_8u:7::print_ln:282 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#19 ] ) always clobbers reg byte a +Statement [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_sword::w#10 print_char_cursor#132 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#132 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#132 ] ) always clobbers reg byte a +Statement [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#19 print_word::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_word::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a +Statement [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:27 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:31 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:35 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_sword::w#0 ] main:2::test_16s:13::print_sword:39 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a +Statement [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 [ print_char_cursor#84 ] ( main:2::test_16s:13::print_sword:27::print_char:53 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:53 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:53 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:53 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_char:59 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_char:59 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_char:59 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_char:59 [ test_16s::i#10 print_line_cursor#1 print_sword::w#10 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:74 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:74 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:74 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:74 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:74 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:74 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:67::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:67::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#84 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#84 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69::print_char:77 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#84 ] main:2::test_16u:9::print_word:234::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:238::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#84 ] main:2::test_16u:9::print_word:242::print_byte:69::print_char:77 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_16u:9::print_word:246::print_byte:69::print_char:77 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_byte:169::print_char:77 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:268::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:272::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#84 ] main:2::test_8u:7::print_byte:276::print_char:77 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#84 ] main:2::test_8u:7::print_byte:280::print_char:77 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:166 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:145::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:149::print_char:172 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:153::print_char:172 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#84 ] main:2::test_8s:11::print_sbyte:157::print_char:172 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#138 print_byte::b#1 ] ) always clobbers reg byte a +Statement [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:27::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:31::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:35::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::b#2 ] main:2::test_16s:13::print_sword:39::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:234 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:238 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:242 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] main:2::test_16u:9::print_word:246 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a +Statement [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 [ print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#139 print_byte::b#7 print_byte::$0 ] ) always clobbers reg byte a +Statement [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::test_16s:13::print_sword:27::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:27::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:31::print_word:56::print_byte:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:35::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#19 print_byte::$2 ] main:2::test_16s:13::print_sword:39::print_word:56::print_byte:69 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:234::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:238::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:242::print_byte:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_16u:9::print_word:246::print_byte:69 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:145::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:149::print_byte:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:153::print_byte:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_byte::$2 ] main:2::test_8s:11::print_sbyte:157::print_byte:169 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:268 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:272 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:276 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] main:2::test_8u:7::print_byte:280 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a +Statement [81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) [ print_char_cursor#130 print_str::str#13 ] ( main:2::test_16s:13::print_str:29 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:33 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_16s:13::print_str:37 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:147 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:151 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_8s:11::print_str:155 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:236 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:240 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_16u:9::print_str:244 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:270 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:274 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#130 print_str::str#13 ] main:2::test_8u:7::print_str:278 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#130 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a +Statement [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a +Statement [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:22 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a +Statement [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a +Statement [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 ] ) always clobbers reg byte a +Statement [96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a +Statement [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a +Statement [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 [ divr16s::resultu#0 divr16s::$16 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 divr16s::$16 ] ) always clobbers reg byte a +Statement [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a +Statement [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a +Statement [109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a +Statement [110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a +Statement [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::divisoru#1 ] ) always clobbers reg byte a +Statement [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 [ divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::neg#2 divr16s::divisoru#1 ] ) always clobbers reg byte a +Statement [113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 [ divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#1 ] ) always clobbers reg byte a +Statement [115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:22::divr16s:88 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a +Statement [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [132] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:22::divr16s:88::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:229::divr16u:254 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#168 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#168 rem8s#3 ] ) always clobbers reg byte a +Statement [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:145 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:149 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:153 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#19 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:157 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a +Statement [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a +Statement [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::divisoru#1 ] ) always clobbers reg byte a +Statement [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::divisoru#1 ] ) always clobbers reg byte a +Statement [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::dividendu#1 ] ( main:2::test_8s:11::div8s:140 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::dividendu#1 ] ) always clobbers reg byte a +Statement [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a +Statement [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a +Statement [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:140::div8u:182::divr8u:201 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:264::divr8u:201 [ print_line_cursor#41 print_char_cursor#141 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a +Statement [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 ] ) always clobbers reg byte a +Statement [225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$11 test_16u::dividend#0 ] ) always clobbers reg byte a +Statement [226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a +Statement [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a +Statement [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [230] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a +Statement [231] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#173 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#173 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a +Statement [241] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a +Statement [245] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#130 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a +Statement [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [255] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a +Statement [256] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:229 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a +Statement [286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#190 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#190 ] ) always clobbers reg byte a +Statement [289] *((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 [291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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 [ test_16s::i#10 test_16s::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] : zp ZP_WORD:3 , -Potential registers zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] : zp ZP_WORD:5 , -Potential registers zp ZP_WORD:7 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] : zp ZP_WORD:7 , -Potential registers zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] : zp ZP_BYTE:9 , reg byte x , -Potential registers zp ZP_BYTE:10 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] : zp ZP_WORD:11 , +Potential registers zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] : zp ZP_WORD:5 , +Potential registers zp ZP_BYTE:7 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] : zp ZP_WORD:8 , +Potential registers zp ZP_WORD:10 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] : zp ZP_WORD:10 , +Potential registers zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] : zp ZP_BYTE:12 , reg byte x , Potential registers zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] : zp ZP_WORD:13 , Potential registers zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] : zp ZP_WORD:15 , Potential registers zp ZP_WORD:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] : zp ZP_WORD:17 , @@ -7103,11 +7140,11 @@ Potential registers zp ZP_BYTE:123 [ test_8u::res#0 ] : zp ZP_BYTE:123 , reg byt REGISTER UPLIFT SCOPES Uplift Scope [divr16u] 884.42: zp ZP_WORD:26 [ divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 321.61: zp ZP_WORD:30 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:83 [ divr16u::$1 ] 202: zp ZP_BYTE:84 [ divr16u::$2 ] 167.04: zp ZP_BYTE:32 [ divr16u::i#2 divr16u::i#1 ] 78.82: zp ZP_WORD:28 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] 20.88: zp ZP_WORD:24 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] 4: zp ZP_WORD:73 [ divr16u::return#3 ] 4: zp ZP_WORD:116 [ divr16u::return#2 ] Uplift Scope [divr8u] 909.67: zp ZP_BYTE:42 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] 332.19: zp ZP_BYTE:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] 202: zp ZP_BYTE:101 [ divr8u::$1 ] 168.33: zp ZP_BYTE:45 [ divr8u::i#2 divr8u::i#1 ] 77.42: zp ZP_BYTE:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] 12.75: zp ZP_BYTE:98 [ divr8u::divisor#0 ] 4: zp ZP_BYTE:99 [ divr8u::return#0 ] -Uplift Scope [] 288.3: zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] 254.79: zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] 6.83: zp ZP_BYTE:39 [ rem8s#3 rem8s#2 rem8s#33 ] 6.68: zp ZP_WORD:22 [ rem16s#11 rem16s#2 rem16s#37 ] 0.5: zp ZP_BYTE:102 [ rem8u#17 ] 0.48: zp ZP_WORD:85 [ rem16u#1 ] +Uplift Scope [] 282.21: zp ZP_WORD:10 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] 254.79: zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] 6.83: zp ZP_BYTE:39 [ rem8s#3 rem8s#2 rem8s#33 ] 6.68: zp ZP_WORD:22 [ rem16s#11 rem16s#2 rem16s#37 ] 0.5: zp ZP_BYTE:102 [ rem8u#17 ] 0.48: zp ZP_WORD:85 [ rem16u#1 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] -Uplift Scope [print_byte] 113.5: zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] 4: zp ZP_BYTE:63 [ print_byte::$0 ] 4: zp ZP_BYTE:64 [ print_byte::$2 ] -Uplift Scope [print_word] 97.67: zp ZP_WORD:7 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] -Uplift Scope [print_sword] 97.5: zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] +Uplift Scope [print_byte] 113.5: zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] 4: zp ZP_BYTE:63 [ print_byte::$0 ] 4: zp ZP_BYTE:64 [ print_byte::$2 ] +Uplift Scope [print_word] 97.67: zp ZP_WORD:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] +Uplift Scope [print_sword] 93.33: zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] Uplift Scope [print_sbyte] 93.33: zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] Uplift Scope [div8u] 33.5: zp ZP_BYTE:41 [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] 28: zp ZP_BYTE:40 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] 22: zp ZP_BYTE:122 [ div8u::return#3 ] 4: zp ZP_BYTE:93 [ div8u::return#2 ] 3.75: zp ZP_BYTE:100 [ div8u::return#0 ] Uplift Scope [div8s] 22: zp ZP_BYTE:91 [ div8s::return#3 ] 11: zp ZP_BYTE:36 [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] 11: zp ZP_BYTE:38 [ div8s::return#2 div8s::return#1 div8s::return#7 ] 8.86: zp ZP_BYTE:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] 5: zp ZP_BYTE:89 [ div8s::dividend#0 ] 4: zp ZP_BYTE:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] 4: zp ZP_BYTE:95 [ div8s::$11 ] 2.14: zp ZP_BYTE:90 [ div8s::divisor#0 ] 2: zp ZP_BYTE:97 [ div8s::dividendu#1 ] 1: zp ZP_BYTE:96 [ div8s::divisoru#1 ] 0.5: zp ZP_BYTE:94 [ div8s::resultu#0 ] @@ -7119,89 +7156,89 @@ Uplift Scope [div16s] 22: zp ZP_WORD:59 [ div16s::return#2 ] 6.5: zp ZP_WORD:55 Uplift Scope [print_cls] 33: zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [test_8s] 18.26: zp ZP_BYTE:33 [ test_8s::i#10 test_8s::i#1 ] 4.71: zp ZP_BYTE:87 [ test_8s::dividend#0 ] 3: zp ZP_BYTE:88 [ test_8s::divisor#0 ] 2.2: zp ZP_BYTE:92 [ test_8s::res#0 ] Uplift Scope [test_8u] 12.83: zp ZP_BYTE:47 [ test_8u::i#10 test_8u::i#1 ] 4.71: zp ZP_BYTE:120 [ test_8u::dividend#0 ] 3.3: zp ZP_BYTE:121 [ test_8u::divisor#0 ] 2.44: zp ZP_BYTE:123 [ test_8u::res#0 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:10 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:7 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [divr16u] best 45197 combination zp ZP_WORD:26 [ divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:30 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:28 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:24 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] zp ZP_WORD:73 [ divr16u::return#3 ] zp ZP_WORD:116 [ divr16u::return#2 ] -Uplifting [divr8u] best 42794 combination reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] zp ZP_BYTE:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] reg byte a [ divr8u::$1 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] zp ZP_BYTE:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] zp ZP_BYTE:98 [ divr8u::divisor#0 ] zp ZP_BYTE:99 [ divr8u::return#0 ] +Uplifting [divr16u] best 45214 combination zp ZP_WORD:26 [ divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:30 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:28 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:24 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] zp ZP_WORD:73 [ divr16u::return#3 ] zp ZP_WORD:116 [ divr16u::return#2 ] +Uplifting [divr8u] best 42811 combination reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] zp ZP_BYTE:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] reg byte a [ divr8u::$1 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] zp ZP_BYTE:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] zp ZP_BYTE:98 [ divr8u::divisor#0 ] zp ZP_BYTE:99 [ divr8u::return#0 ] Limited combination testing to 100 combinations of 3888 possible. -Uplifting [] best 42725 combination zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] zp ZP_WORD:22 [ rem16s#11 rem16s#2 rem16s#37 ] reg byte x [ rem8u#17 ] zp ZP_WORD:85 [ rem16u#1 ] -Uplifting [print_str] best 42725 combination zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] -Uplifting [print_byte] best 42717 combination zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 42717 combination zp ZP_WORD:7 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] -Uplifting [print_sword] best 42717 combination zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] -Uplifting [print_sbyte] best 42717 combination zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Uplifting [div8u] best 42579 combination reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::return#3 ] reg byte a [ div8u::return#2 ] zp ZP_BYTE:100 [ div8u::return#0 ] +Uplifting [] best 42742 combination zp ZP_WORD:10 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] zp ZP_WORD:22 [ rem16s#11 rem16s#2 rem16s#37 ] reg byte x [ rem8u#17 ] zp ZP_WORD:85 [ rem16u#1 ] +Uplifting [print_str] best 42742 combination zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] +Uplifting [print_byte] best 42734 combination zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 42734 combination zp ZP_WORD:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] +Uplifting [print_sword] best 42734 combination zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] +Uplifting [print_sbyte] best 42734 combination zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Uplifting [div8u] best 42596 combination reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::return#3 ] reg byte a [ div8u::return#2 ] zp ZP_BYTE:100 [ div8u::return#0 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [div8s] best 42474 combination reg byte a [ div8s::return#3 ] reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] zp ZP_BYTE:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] zp ZP_BYTE:89 [ div8s::dividend#0 ] zp ZP_BYTE:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] zp ZP_BYTE:95 [ div8s::$11 ] zp ZP_BYTE:90 [ div8s::divisor#0 ] zp ZP_BYTE:97 [ div8s::dividendu#1 ] zp ZP_BYTE:96 [ div8s::divisoru#1 ] zp ZP_BYTE:94 [ div8s::resultu#0 ] +Uplifting [div8s] best 42491 combination reg byte a [ div8s::return#3 ] reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] zp ZP_BYTE:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] zp ZP_BYTE:89 [ div8s::dividend#0 ] zp ZP_BYTE:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] zp ZP_BYTE:95 [ div8s::$11 ] zp ZP_BYTE:90 [ div8s::divisor#0 ] zp ZP_BYTE:97 [ div8s::dividendu#1 ] zp ZP_BYTE:96 [ div8s::divisoru#1 ] zp ZP_BYTE:94 [ div8s::resultu#0 ] Limited combination testing to 100 combinations of 995328 possible. -Uplifting [divr16s] best 42463 combination zp ZP_WORD:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] zp ZP_WORD:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:69 [ divr16s::return#3 ] zp ZP_WORD:77 [ divr16s::$16 ] zp ZP_WORD:65 [ divr16s::dividend#0 ] zp ZP_WORD:81 [ divr16s::dividendu#1 ] zp ZP_WORD:79 [ divr16s::divisoru#1 ] zp ZP_WORD:67 [ divr16s::divisor#0 ] zp ZP_WORD:75 [ divr16s::resultu#0 ] -Uplifting [test_16u] best 42393 combination zp ZP_BYTE:46 [ test_16u::i#10 test_16u::i#1 ] reg byte x [ test_16u::$11 ] zp ZP_WORD:104 [ test_16u::dividend#0 ] zp ZP_WORD:106 [ test_16u::divisor#0 ] zp ZP_WORD:114 [ test_16u::res#0 ] -Uplifting [test_16s] best 42323 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] reg byte x [ test_16s::$11 ] zp ZP_WORD:51 [ test_16s::dividend#0 ] zp ZP_WORD:53 [ test_16s::divisor#0 ] zp ZP_WORD:61 [ test_16s::res#0 ] -Uplifting [div16u] best 42323 combination zp ZP_WORD:112 [ div16u::return#2 ] zp ZP_WORD:108 [ div16u::dividend#0 ] zp ZP_WORD:110 [ div16u::divisor#0 ] zp ZP_WORD:118 [ div16u::return#0 ] -Uplifting [div16s] best 42323 combination zp ZP_WORD:59 [ div16s::return#2 ] zp ZP_WORD:55 [ div16s::dividend#0 ] zp ZP_WORD:57 [ div16s::divisor#0 ] zp ZP_WORD:71 [ div16s::return#0 ] -Uplifting [print_cls] best 42323 combination zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [test_8s] best 42323 combination zp ZP_BYTE:33 [ test_8s::i#10 test_8s::i#1 ] zp ZP_BYTE:87 [ test_8s::dividend#0 ] zp ZP_BYTE:88 [ test_8s::divisor#0 ] zp ZP_BYTE:92 [ test_8s::res#0 ] -Uplifting [test_8u] best 42323 combination zp ZP_BYTE:47 [ test_8u::i#10 test_8u::i#1 ] zp ZP_BYTE:120 [ test_8u::dividend#0 ] zp ZP_BYTE:121 [ test_8u::divisor#0 ] zp ZP_BYTE:123 [ test_8u::res#0 ] -Uplifting [print_char] best 42305 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [print_ln] best 42305 combination -Uplifting [main] best 42305 combination +Uplifting [divr16s] best 42480 combination zp ZP_WORD:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] zp ZP_WORD:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:69 [ divr16s::return#3 ] zp ZP_WORD:77 [ divr16s::$16 ] zp ZP_WORD:65 [ divr16s::dividend#0 ] zp ZP_WORD:81 [ divr16s::dividendu#1 ] zp ZP_WORD:79 [ divr16s::divisoru#1 ] zp ZP_WORD:67 [ divr16s::divisor#0 ] zp ZP_WORD:75 [ divr16s::resultu#0 ] +Uplifting [test_16u] best 42410 combination zp ZP_BYTE:46 [ test_16u::i#10 test_16u::i#1 ] reg byte x [ test_16u::$11 ] zp ZP_WORD:104 [ test_16u::dividend#0 ] zp ZP_WORD:106 [ test_16u::divisor#0 ] zp ZP_WORD:114 [ test_16u::res#0 ] +Uplifting [test_16s] best 42340 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] reg byte x [ test_16s::$11 ] zp ZP_WORD:51 [ test_16s::dividend#0 ] zp ZP_WORD:53 [ test_16s::divisor#0 ] zp ZP_WORD:61 [ test_16s::res#0 ] +Uplifting [div16u] best 42340 combination zp ZP_WORD:112 [ div16u::return#2 ] zp ZP_WORD:108 [ div16u::dividend#0 ] zp ZP_WORD:110 [ div16u::divisor#0 ] zp ZP_WORD:118 [ div16u::return#0 ] +Uplifting [div16s] best 42340 combination zp ZP_WORD:59 [ div16s::return#2 ] zp ZP_WORD:55 [ div16s::dividend#0 ] zp ZP_WORD:57 [ div16s::divisor#0 ] zp ZP_WORD:71 [ div16s::return#0 ] +Uplifting [print_cls] best 42340 combination zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [test_8s] best 42340 combination zp ZP_BYTE:33 [ test_8s::i#10 test_8s::i#1 ] zp ZP_BYTE:87 [ test_8s::dividend#0 ] zp ZP_BYTE:88 [ test_8s::divisor#0 ] zp ZP_BYTE:92 [ test_8s::res#0 ] +Uplifting [test_8u] best 42340 combination zp ZP_BYTE:47 [ test_8u::i#10 test_8u::i#1 ] zp ZP_BYTE:120 [ test_8u::dividend#0 ] zp ZP_BYTE:121 [ test_8u::divisor#0 ] zp ZP_BYTE:123 [ test_8u::res#0 ] +Uplifting [print_char] best 42319 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplifting [print_ln] best 42319 combination +Uplifting [main] best 42319 combination Attempting to uplift remaining variables inzp ZP_BYTE:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] -Uplifting [divr8u] best 42305 combination zp ZP_BYTE:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -Uplifting [print_byte] best 42305 combination zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] +Uplifting [divr8u] best 42319 combination zp ZP_BYTE:44 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] +Uplifting [print_byte] best 42319 combination zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Uplifting [print_sbyte] best 42305 combination zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Uplifting [print_sbyte] best 42319 combination zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] -Uplifting [divr8u] best 42305 combination zp ZP_BYTE:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] +Uplifting [divr8u] best 42319 combination zp ZP_BYTE:43 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ test_8s::i#10 test_8s::i#1 ] -Uplifting [test_8s] best 42305 combination zp ZP_BYTE:33 [ test_8s::i#10 test_8s::i#1 ] +Uplifting [test_8s] best 42319 combination zp ZP_BYTE:33 [ test_8s::i#10 test_8s::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] -Uplifting [test_16s] best 42305 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] +Uplifting [test_16s] best 42319 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:46 [ test_16u::i#10 test_16u::i#1 ] -Uplifting [test_16u] best 42305 combination zp ZP_BYTE:46 [ test_16u::i#10 test_16u::i#1 ] +Uplifting [test_16u] best 42319 combination zp ZP_BYTE:46 [ test_16u::i#10 test_16u::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ test_8u::i#10 test_8u::i#1 ] -Uplifting [test_8u] best 42305 combination zp ZP_BYTE:47 [ test_8u::i#10 test_8u::i#1 ] +Uplifting [test_8u] best 42319 combination zp ZP_BYTE:47 [ test_8u::i#10 test_8u::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:98 [ divr8u::divisor#0 ] -Uplifting [divr8u] best 42305 combination zp ZP_BYTE:98 [ divr8u::divisor#0 ] +Uplifting [divr8u] best 42319 combination zp ZP_BYTE:98 [ divr8u::divisor#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -Uplifting [div8s] best 42298 combination reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] +Uplifting [div8s] best 42312 combination reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] Attempting to uplift remaining variables inzp ZP_BYTE:89 [ div8s::dividend#0 ] -Uplifting [div8s] best 42263 combination reg byte y [ div8s::dividend#0 ] +Uplifting [div8s] best 42277 combination reg byte y [ div8s::dividend#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:87 [ test_8s::dividend#0 ] -Uplifting [test_8s] best 42263 combination zp ZP_BYTE:87 [ test_8s::dividend#0 ] +Uplifting [test_8s] best 42277 combination zp ZP_BYTE:87 [ test_8s::dividend#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:120 [ test_8u::dividend#0 ] -Uplifting [test_8u] best 42263 combination zp ZP_BYTE:120 [ test_8u::dividend#0 ] +Uplifting [test_8u] best 42277 combination zp ZP_BYTE:120 [ test_8u::dividend#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] -Uplifting [div8s] best 42263 combination zp ZP_BYTE:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] +Uplifting [div8s] best 42277 combination zp ZP_BYTE:37 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:95 [ div8s::$11 ] -Uplifting [div8s] best 42259 combination reg byte a [ div8s::$11 ] +Uplifting [div8s] best 42273 combination reg byte a [ div8s::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:99 [ divr8u::return#0 ] -Uplifting [divr8u] best 42253 combination reg byte a [ divr8u::return#0 ] +Uplifting [divr8u] best 42267 combination reg byte a [ divr8u::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:100 [ div8u::return#0 ] -Uplifting [div8u] best 42217 combination reg byte a [ div8u::return#0 ] +Uplifting [div8u] best 42231 combination reg byte a [ div8u::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:121 [ test_8u::divisor#0 ] -Uplifting [test_8u] best 42217 combination zp ZP_BYTE:121 [ test_8u::divisor#0 ] +Uplifting [test_8u] best 42231 combination zp ZP_BYTE:121 [ test_8u::divisor#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:88 [ test_8s::divisor#0 ] -Uplifting [test_8s] best 42217 combination zp ZP_BYTE:88 [ test_8s::divisor#0 ] +Uplifting [test_8s] best 42231 combination zp ZP_BYTE:88 [ test_8s::divisor#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:123 [ test_8u::res#0 ] -Uplifting [test_8u] best 42217 combination zp ZP_BYTE:123 [ test_8u::res#0 ] +Uplifting [test_8u] best 42231 combination zp ZP_BYTE:123 [ test_8u::res#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:92 [ test_8s::res#0 ] -Uplifting [test_8s] best 42217 combination zp ZP_BYTE:92 [ test_8s::res#0 ] +Uplifting [test_8s] best 42231 combination zp ZP_BYTE:92 [ test_8s::res#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:90 [ div8s::divisor#0 ] -Uplifting [div8s] best 42182 combination reg byte x [ div8s::divisor#0 ] +Uplifting [div8s] best 42196 combination reg byte x [ div8s::divisor#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:97 [ div8s::dividendu#1 ] -Uplifting [div8s] best 42178 combination reg byte a [ div8s::dividendu#1 ] +Uplifting [div8s] best 42192 combination reg byte a [ div8s::dividendu#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:96 [ div8s::divisoru#1 ] -Uplifting [div8s] best 42174 combination reg byte x [ div8s::divisoru#1 ] +Uplifting [div8s] best 42188 combination reg byte x [ div8s::divisoru#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:94 [ div8s::resultu#0 ] -Uplifting [div8s] best 42171 combination reg byte y [ div8s::resultu#0 ] +Uplifting [div8s] best 42185 combination reg byte y [ div8s::resultu#0 ] Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:75 [ divr16s::resultu#0 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] ] with [ zp ZP_WORD:7 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] with [ zp ZP_WORD:51 [ test_16s::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] ] with [ zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] with [ zp ZP_BYTE:120 [ test_8u::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 ] ] with [ zp ZP_WORD:8 [ print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] with [ zp ZP_WORD:51 [ test_16s::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] ] with [ zp ZP_BYTE:34 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] with [ zp ZP_BYTE:120 [ test_8u::dividend#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] ] with [ zp ZP_WORD:28 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] ] with [ zp ZP_WORD:65 [ divr16s::dividend#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 ] ] with [ zp ZP_WORD:81 [ divr16s::dividendu#1 ] ] - score: 1 @@ -7220,16 +7257,16 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:104 [ test_16u Coalescing zero page register with common assignment [ zp ZP_WORD:106 [ test_16u::divisor#0 ] ] with [ zp ZP_WORD:110 [ div16u::divisor#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:112 [ div16u::return#2 ] ] with [ zp ZP_WORD:114 [ test_16u::res#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:112 [ div16u::return#2 test_16u::res#0 ] ] with [ zp ZP_WORD:118 [ div16u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 ] ] with [ zp ZP_WORD:55 [ div16s::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 ] ] with [ zp ZP_WORD:104 [ test_16u::dividend#0 div16u::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 ] ] with [ zp ZP_BYTE:87 [ test_8s::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 ] ] with [ zp ZP_WORD:55 [ div16s::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 ] ] with [ zp ZP_WORD:104 [ test_16u::dividend#0 div16u::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:12 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 ] ] with [ zp ZP_BYTE:87 [ test_8s::dividend#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::divisoru#1 ] ] with [ zp ZP_WORD:106 [ test_16u::divisor#0 div16u::divisor#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:30 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 ] ] with [ zp ZP_WORD:59 [ div16s::return#2 test_16s::res#0 div16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ rem16s#11 rem16s#2 rem16s#37 divr16s::$16 rem16u#1 ] ] with [ zp ZP_WORD:26 [ divr16u::rem#5 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 div16s::return#2 test_16s::res#0 div16s::return#0 ] ] with [ zp ZP_WORD:112 [ div16u::return#2 test_16u::res#0 div16u::return#0 ] ] - score: 1 -Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:7 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ] -Allocated (was zp ZP_WORD:11) zp ZP_WORD:8 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] +Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] +Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ] Allocated (was zp ZP_WORD:13) zp ZP_WORD:10 [ print_str::str#13 print_str::str#15 print_str::str#0 ] Allocated (was zp ZP_WORD:15) zp ZP_WORD:12 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::dividendu#1 ] Allocated (was zp ZP_WORD:17) zp ZP_WORD:14 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::divisoru#1 test_16u::divisor#0 div16u::divisor#0 ] @@ -7257,7 +7294,7 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(bbegin) .pc = $80d "Program" //SEG2 Global Constants & labels - .label print_char_cursor = 8 + .label print_char_cursor = 7 .label print_line_cursor = 3 .label rem16u = $12 .label rem16s = $12 @@ -7280,7 +7317,7 @@ bend: //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [285] phi from main to print_cls [phi:main->print_cls] + //SEG12 [287] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -7289,7 +7326,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call test_8u - //SEG16 [256] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG16 [258] phi from main::@1 to test_8u [phi:main::@1->test_8u] test_8u_from_b1: jsr test_8u //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -7298,7 +7335,7 @@ main: { //SEG18 main::@2 b2: //SEG19 [9] call test_16u - //SEG20 [220] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG20 [222] phi from main::@2 to test_16u [phi:main::@2->test_16u] test_16u_from_b2: jsr test_16u //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -7307,7 +7344,7 @@ main: { //SEG22 main::@3 b3: //SEG23 [11] call test_8s - //SEG24 [132] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG24 [134] phi from main::@3 to test_8s [phi:main::@3->test_8s] test_8s_from_b3: jsr test_8s //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -7367,7 +7404,7 @@ test_16s: { b2: //SEG45 [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 //SEG46 [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - //SEG47 [26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG47 [26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -7375,8 +7412,8 @@ test_16s: { //SEG48 [27] call print_sword //SEG49 [50] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] print_sword_from_b2: - //SEG50 [50] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#161 [phi:test_16s::@2->print_sword#0] -- register_copy - //SEG51 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy + //SEG50 [50] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#164 [phi:test_16s::@2->print_sword#0] -- register_copy + //SEG51 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy jsr print_sword //SEG52 [28] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] b3_from_b2: @@ -7384,9 +7421,9 @@ test_16s: { //SEG53 test_16s::@3 b3: //SEG54 [29] call print_str - //SEG55 [77] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] + //SEG55 [79] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] print_str_from_b3: - //SEG56 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG56 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 lda #str @@ -7403,8 +7440,8 @@ test_16s: { //SEG59 [31] call print_sword //SEG60 [50] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] print_sword_from_b4: - //SEG61 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy - //SEG62 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy + //SEG61 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@4->print_sword#0] -- register_copy + //SEG62 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy jsr print_sword //SEG63 [32] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] b5_from_b4: @@ -7412,9 +7449,9 @@ test_16s: { //SEG64 test_16s::@5 b5: //SEG65 [33] call print_str - //SEG66 [77] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] + //SEG66 [79] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] print_str_from_b5: - //SEG67 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG67 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 @@ -7431,8 +7468,8 @@ test_16s: { //SEG70 [35] call print_sword //SEG71 [50] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] print_sword_from_b6: - //SEG72 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy - //SEG73 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy + //SEG72 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@6->print_sword#0] -- register_copy + //SEG73 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy jsr print_sword //SEG74 [36] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] b7_from_b6: @@ -7440,9 +7477,9 @@ test_16s: { //SEG75 test_16s::@7 b7: //SEG76 [37] call print_str - //SEG77 [77] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] + //SEG77 [79] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] print_str_from_b7: - //SEG78 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG78 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 @@ -7459,8 +7496,8 @@ test_16s: { //SEG81 [39] call print_sword //SEG82 [50] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] print_sword_from_b8: - //SEG83 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy - //SEG84 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy + //SEG83 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@8->print_sword#0] -- register_copy + //SEG84 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy jsr print_sword //SEG85 [40] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] b9_from_b8: @@ -7507,7 +7544,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG100 [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG100 [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -7527,25 +7564,56 @@ print_ln: { // print_sword(signed word zeropage(5) w) print_sword: { .label w = 5 - //SEG104 [51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG104 [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG105 [52] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG106 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG105 [52] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG106 print_sword::@3 + b3: //SEG107 [53] call print_char - //SEG108 [73] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG109 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG110 [73] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG108 [61] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG109 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG110 [61] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG111 [54] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG112 [54] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG113 print_sword::@2 + b2: + //SEG114 [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + //SEG115 [56] call print_word + //SEG116 [65] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG117 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG118 [65] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG119 print_sword::@return + breturn: + //SEG120 [57] return + rts + //SEG121 [58] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG122 print_sword::@1 + b1: + //SEG123 [59] call print_char + //SEG124 [61] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG125 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG126 [61] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG111 print_sword::@3 - b3: - //SEG112 [54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG127 print_sword::@4 + b4: + //SEG128 [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -7553,161 +7621,142 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG113 [55] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG114 [55] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG115 [55] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG116 print_sword::@1 - b1: - //SEG117 [56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 - //SEG118 [57] call print_word - //SEG119 [59] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG120 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG121 [59] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word + jmp b2_from_b4 +} +//SEG129 print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + //SEG130 [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + //SEG131 [63] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: jmp breturn - //SEG122 print_sword::@return + //SEG132 print_char::@return breturn: - //SEG123 [58] return + //SEG133 [64] return rts } -//SEG124 print_word +//SEG134 print_word // Print a word as HEX // print_word(word zeropage(5) w) print_word: { .label w = 5 - //SEG125 [60] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG135 [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG126 [61] call print_byte - //SEG127 [65] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG136 [67] call print_byte + //SEG137 [71] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG128 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG129 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG138 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#138 [phi:print_word->print_byte#0] -- register_copy + //SEG139 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG130 print_word::@1 + //SEG140 print_word::@1 b1: - //SEG131 [62] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG141 [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG132 [63] call print_byte - //SEG133 [65] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG142 [69] call print_byte + //SEG143 [71] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG134 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG135 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG144 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG145 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG136 print_word::@return + //SEG146 print_word::@return breturn: - //SEG137 [64] return + //SEG147 [70] return rts } -//SEG138 print_byte +//SEG148 print_byte // Print a byte as HEX -// print_byte(byte zeropage(7) b) +// print_byte(byte zeropage(9) b) print_byte: { - .label b = 7 - //SEG139 [66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + .label b = 9 + //SEG149 [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG140 [67] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG150 [73] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG141 [68] call print_char - //SEG142 [73] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG151 [74] call print_char + //SEG152 [61] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG143 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG144 [73] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG153 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy + //SEG154 [61] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG145 print_byte::@1 + //SEG155 print_byte::@1 b1: - //SEG146 [69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG156 [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG147 [70] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG157 [76] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG148 [71] call print_char - //SEG149 [73] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG158 [77] call print_char + //SEG159 [61] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG150 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG151 [73] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG160 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG161 [61] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG152 print_byte::@return + //SEG162 print_byte::@return breturn: - //SEG153 [72] return + //SEG163 [78] return rts } -//SEG154 print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - //SEG155 [74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - //SEG156 [75] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - jmp breturn - //SEG157 print_char::@return - breturn: - //SEG158 [76] return - rts -} -//SEG159 print_str +//SEG164 print_str // Print a zero-terminated string // print_str(byte* zeropage($a) str) print_str: { .label str = $a - //SEG160 [78] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG165 [80] 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: - //SEG161 [78] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG162 [78] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG166 [80] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#19 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG167 [80] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG163 print_str::@1 + //SEG168 print_str::@1 b1: - //SEG164 [79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG169 [81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG165 print_str::@return + //SEG170 print_str::@return breturn: - //SEG166 [80] return + //SEG171 [82] return rts - //SEG167 print_str::@2 + //SEG172 print_str::@2 b2: - //SEG168 [81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG173 [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG169 [82] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG174 [84] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG170 [83] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG175 [85] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG171 div16s +//SEG176 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. @@ -7719,30 +7768,30 @@ div16s: { .label return = $10 .label dividend = 5 .label divisor = $1c - //SEG172 [84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + //SEG177 [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG173 [85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG178 [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG174 [86] call divr16s + //SEG179 [88] call divr16s jsr divr16s - //SEG175 [87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG180 [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 jmp b1 - //SEG176 div16s::@1 + //SEG181 div16s::@1 b1: - //SEG177 [88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + //SEG182 [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 jmp breturn - //SEG178 div16s::@return + //SEG183 div16s::@return breturn: - //SEG179 [89] return + //SEG184 [91] return rts } -//SEG180 divr16s +//SEG185 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -7757,57 +7806,57 @@ divr16s: { .label return = $10 .label dividend = $c .label divisor = $e - //SEG181 [90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG186 [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 jmp b6 - //SEG182 divr16s::@6 + //SEG187 divr16s::@6 b6: - //SEG183 [91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 - //SEG184 [92] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] + //SEG188 [93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + //SEG189 [94] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] b2_from_b6: - //SEG185 [92] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy - //SEG186 [92] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuyy=vbuc1 + //SEG190 [94] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy + //SEG191 [94] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG187 divr16s::@2 + //SEG192 divr16s::@2 b2: - //SEG188 [93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG193 [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 jmp b7 - //SEG189 divr16s::@7 + //SEG194 divr16s::@7 b7: - //SEG190 [94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG191 [95] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] + //SEG195 [96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG196 [97] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] b4_from_b3: b4_from_b7: - //SEG192 [95] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy - //SEG193 [95] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy + //SEG197 [97] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy + //SEG198 [97] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy jmp b4 - //SEG194 divr16s::@4 + //SEG199 divr16s::@4 b4: - //SEG195 [96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - //SEG196 [97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - //SEG197 [98] call divr16u - //SEG198 [114] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG200 [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + //SEG201 [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + //SEG202 [100] call divr16u + //SEG203 [116] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: - //SEG199 [114] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG200 [114] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG204 [116] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG205 [116] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy jsr divr16u - //SEG201 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG206 [101] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b9 - //SEG202 divr16s::@9 + //SEG207 divr16s::@9 b9: - //SEG203 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - //SEG204 [101] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuyy_eq_0_then_la1 + //SEG208 [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + //SEG209 [103] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuyy_eq_0_then_la1 cpy #0 beq b5 jmp b8 - //SEG205 divr16s::@8 + //SEG210 divr16s::@8 b8: - //SEG206 [102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 - //SEG207 [103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 -- vwsz1=_neg_vwsz1 + //SEG211 [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 + //SEG212 [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 -- vwsz1=_neg_vwsz1 sec lda #0 sbc rem16s @@ -7815,7 +7864,7 @@ divr16s: { lda #0 sbc rem16s+1 sta rem16s+1 - //SEG208 [104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG213 [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc return @@ -7823,24 +7872,24 @@ divr16s: { lda #0 sbc return+1 sta return+1 - //SEG209 [105] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] + //SEG214 [107] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] breturn_from_b5: breturn_from_b8: - //SEG210 [105] phi (signed word) rem16s#11 = (signed word~) rem16s#37 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy - //SEG211 [105] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@5/divr16s::@8->divr16s::@return#1] -- register_copy + //SEG215 [107] phi (signed word) rem16s#11 = (signed word~) rem16s#37 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy + //SEG216 [107] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@5/divr16s::@8->divr16s::@return#1] -- register_copy jmp breturn - //SEG212 divr16s::@return + //SEG217 divr16s::@return breturn: - //SEG213 [106] return + //SEG218 [108] return rts - //SEG214 divr16s::@5 + //SEG219 divr16s::@5 b5: - //SEG215 [107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG216 [108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + //SEG220 [109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG221 [110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 jmp breturn_from_b5 - //SEG217 divr16s::@3 + //SEG222 divr16s::@3 b3: - //SEG218 [109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG223 [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc divisoru @@ -7848,15 +7897,15 @@ divr16s: { lda #0 sbc divisoru+1 sta divisoru+1 - //SEG219 [110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG224 [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - //SEG220 [111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 + //SEG225 [113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 jmp b4_from_b3 - //SEG221 divr16s::@1 + //SEG226 divr16s::@1 b1: - //SEG222 [112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 + //SEG227 [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc dividendu @@ -7864,15 +7913,15 @@ divr16s: { lda #0 sbc dividendu+1 sta dividendu+1 - //SEG223 [113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 - //SEG224 [92] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG228 [115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 + //SEG229 [94] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG225 [92] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG226 [92] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuyy=vbuc1 + //SEG230 [94] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG231 [94] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuyy=vbuc1 ldy #1 jmp b2 } -//SEG227 divr16u +//SEG232 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -7884,62 +7933,62 @@ divr16u: { .label quotient = $10 .label return = $10 .label divisor = $e - //SEG228 [115] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG233 [117] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG229 [115] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG234 [117] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG230 [115] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG235 [117] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG231 [115] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG232 [115] phi (word) divr16u::rem#5 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG236 [117] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG237 [117] phi (word) divr16u::rem#5 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 lda #0 sta rem lda #0 sta rem+1 jmp b1 - //SEG233 [115] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG238 [117] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG234 [115] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG235 [115] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG236 [115] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG237 [115] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG239 [117] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG240 [117] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG241 [117] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG242 [117] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG238 divr16u::@1 + //SEG243 divr16u::@1 b1: - //SEG239 [116] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG244 [118] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG240 [117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG245 [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG241 [118] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG246 [120] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG242 [119] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG247 [121] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG243 divr16u::@4 + //SEG248 divr16u::@4 b4: - //SEG244 [120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG249 [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG245 [121] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG250 [123] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG246 [121] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG251 [123] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG247 divr16u::@2 + //SEG252 divr16u::@2 b2: - //SEG248 [122] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG253 [124] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG249 [123] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG254 [125] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG250 [124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG255 [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -7949,14 +7998,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG251 divr16u::@5 + //SEG256 divr16u::@5 b5: - //SEG252 [125] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG257 [127] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG253 [126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG258 [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -7964,238 +8013,238 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG254 [127] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG259 [129] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG255 [127] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG256 [127] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG260 [129] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG261 [129] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG257 divr16u::@3 + //SEG262 divr16u::@3 b3: - //SEG258 [128] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG263 [130] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG259 [129] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG264 [131] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG260 divr16u::@6 + //SEG265 divr16u::@6 b6: - //SEG261 [130] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG266 [132] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG262 divr16u::@return + //SEG267 divr16u::@return breturn: - //SEG263 [131] return + //SEG268 [133] return rts } -//SEG264 test_8s +//SEG269 test_8s test_8s: { - .label dividend = 7 + .label dividend = 9 .label divisor = $1e .label res = $1f .label i = $14 - //SEG265 [133] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG270 [135] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] b1_from_test_8s: - //SEG266 [133] phi (byte) test_8s::i#10 = (byte) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG271 [135] phi (byte) test_8s::i#10 = (byte) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG267 [133] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] + //SEG272 [135] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] b1_from_b10: - //SEG268 [133] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy + //SEG273 [135] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy jmp b1 - //SEG269 test_8s::@1 + //SEG274 test_8s::@1 b1: - //SEG270 [134] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG275 [136] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG271 [135] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG276 [137] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG272 [136] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 + //SEG277 [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 ldy dividend - //SEG273 [137] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 + //SEG278 [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 ldx divisor - //SEG274 [138] call div8s + //SEG279 [140] call div8s jsr div8s - //SEG275 [139] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + //SEG280 [141] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 jmp b2 - //SEG276 test_8s::@2 + //SEG281 test_8s::@2 b2: - //SEG277 [140] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa + //SEG282 [142] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa sta res - //SEG278 [141] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - //SEG279 [142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG283 [143] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + //SEG284 [144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG280 [143] call print_sbyte - //SEG281 [161] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] + //SEG285 [145] call print_sbyte + //SEG286 [163] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] print_sbyte_from_b2: - //SEG282 [161] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#167 [phi:test_8s::@2->print_sbyte#0] -- register_copy - //SEG283 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy + //SEG287 [163] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#168 [phi:test_8s::@2->print_sbyte#0] -- register_copy + //SEG288 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG284 [144] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] + //SEG289 [146] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] b3_from_b2: jmp b3 - //SEG285 test_8s::@3 + //SEG290 test_8s::@3 b3: - //SEG286 [145] call print_str - //SEG287 [77] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] + //SEG291 [147] call print_str + //SEG292 [79] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] print_str_from_b3: - //SEG288 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG293 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG289 test_8s::@4 + //SEG294 test_8s::@4 b4: - //SEG290 [146] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG295 [148] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG291 [147] call print_sbyte - //SEG292 [161] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] + //SEG296 [149] call print_sbyte + //SEG297 [163] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] print_sbyte_from_b4: - //SEG293 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy - //SEG294 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy + //SEG298 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@4->print_sbyte#0] -- register_copy + //SEG299 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG295 [148] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] + //SEG300 [150] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] b5_from_b4: jmp b5 - //SEG296 test_8s::@5 + //SEG301 test_8s::@5 b5: - //SEG297 [149] call print_str - //SEG298 [77] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] + //SEG302 [151] call print_str + //SEG303 [79] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] print_str_from_b5: - //SEG299 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG304 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG300 test_8s::@6 + //SEG305 test_8s::@6 b6: - //SEG301 [150] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG306 [152] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG302 [151] call print_sbyte - //SEG303 [161] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] + //SEG307 [153] call print_sbyte + //SEG308 [163] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] print_sbyte_from_b6: - //SEG304 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy - //SEG305 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy + //SEG309 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@6->print_sbyte#0] -- register_copy + //SEG310 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG306 [152] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] + //SEG311 [154] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] b7_from_b6: jmp b7 - //SEG307 test_8s::@7 + //SEG312 test_8s::@7 b7: - //SEG308 [153] call print_str - //SEG309 [77] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] + //SEG313 [155] call print_str + //SEG314 [79] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] print_str_from_b7: - //SEG310 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG315 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG311 test_8s::@8 + //SEG316 test_8s::@8 b8: - //SEG312 [154] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx + //SEG317 [156] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx stx print_sbyte.b - //SEG313 [155] call print_sbyte - //SEG314 [161] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] + //SEG318 [157] call print_sbyte + //SEG319 [163] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] print_sbyte_from_b8: - //SEG315 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy - //SEG316 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy + //SEG320 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@8->print_sbyte#0] -- register_copy + //SEG321 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG317 [156] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] + //SEG322 [158] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] b9_from_b8: jmp b9 - //SEG318 test_8s::@9 + //SEG323 test_8s::@9 b9: - //SEG319 [157] call print_ln - //SEG320 [45] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] + //SEG324 [159] call print_ln + //SEG325 [45] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] print_ln_from_b9: - //SEG321 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy + //SEG326 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG322 test_8s::@10 + //SEG327 test_8s::@10 b10: - //SEG323 [158] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG328 [160] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG324 [159] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG329 [161] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG325 test_8s::@return + //SEG330 test_8s::@return breturn: - //SEG326 [160] return + //SEG331 [162] return rts dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG327 print_sbyte +//SEG332 print_sbyte // Print a signed byte as HEX -// print_sbyte(signed byte zeropage(7) b) +// print_sbyte(signed byte zeropage(9) b) print_sbyte: { - .label b = 7 - //SEG328 [162] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + .label b = 9 + //SEG333 [164] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG329 [163] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG334 [165] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG330 print_sbyte::@3 + //SEG335 print_sbyte::@3 b3: - //SEG331 [164] call print_char - //SEG332 [73] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG336 [166] call print_char + //SEG337 [61] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG333 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG334 [73] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG338 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#135 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG339 [61] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG335 [165] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG340 [167] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG336 [165] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG341 [167] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG337 print_sbyte::@2 + //SEG342 print_sbyte::@2 b2: - //SEG338 [166] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 - //SEG339 [167] call print_byte - //SEG340 [65] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG343 [168] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 + //SEG344 [169] call print_byte + //SEG345 [71] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG341 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG342 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG346 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG347 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG343 print_sbyte::@return + //SEG348 print_sbyte::@return breturn: - //SEG344 [168] return + //SEG349 [170] return rts - //SEG345 [169] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG350 [171] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG346 print_sbyte::@1 + //SEG351 print_sbyte::@1 b1: - //SEG347 [170] call print_char - //SEG348 [73] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG352 [172] call print_char + //SEG353 [61] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG349 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG350 [73] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG354 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#135 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG355 [61] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG351 print_sbyte::@4 + //SEG356 print_sbyte::@4 b4: - //SEG352 [171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG357 [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -8203,7 +8252,7 @@ print_sbyte: { sta b jmp b2_from_b4 } -//SEG353 div8s +//SEG358 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. @@ -8213,146 +8262,146 @@ print_sbyte: { // div8s(signed byte register(Y) dividend, signed byte register(X) divisor) div8s: { .label neg = $15 - //SEG354 [172] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 + //SEG359 [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 cpy #0 bmi b1 jmp b6 - //SEG355 div8s::@6 + //SEG360 div8s::@6 b6: - //SEG356 [173] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 - //SEG357 [174] phi from div8s::@6 to div8s::@2 [phi:div8s::@6->div8s::@2] + //SEG361 [175] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + //SEG362 [176] phi from div8s::@6 to div8s::@2 [phi:div8s::@6->div8s::@2] b2_from_b6: - //SEG358 [174] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@6->div8s::@2#0] -- register_copy - //SEG359 [174] phi (byte) div8s::neg#3 = (byte) 0 [phi:div8s::@6->div8s::@2#1] -- vbuz1=vbuc1 + //SEG363 [176] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@6->div8s::@2#0] -- register_copy + //SEG364 [176] phi (byte) div8s::neg#3 = (byte) 0 [phi:div8s::@6->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG360 div8s::@2 + //SEG365 div8s::@2 b2: - //SEG361 [175] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 + //SEG366 [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 cpx #0 bmi b3 jmp b7 - //SEG362 div8s::@7 + //SEG367 div8s::@7 b7: - //SEG363 [176] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 - //SEG364 [177] phi from div8s::@3 div8s::@7 to div8s::@4 [phi:div8s::@3/div8s::@7->div8s::@4] + //SEG368 [178] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + //SEG369 [179] phi from div8s::@3 div8s::@7 to div8s::@4 [phi:div8s::@3/div8s::@7->div8s::@4] b4_from_b3: b4_from_b7: - //SEG365 [177] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@7->div8s::@4#0] -- register_copy - //SEG366 [177] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@7->div8s::@4#1] -- register_copy + //SEG370 [179] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@7->div8s::@4#0] -- register_copy + //SEG371 [179] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@7->div8s::@4#1] -- register_copy jmp b4 - //SEG367 div8s::@4 + //SEG372 div8s::@4 b4: - //SEG368 [178] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy + //SEG373 [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy tya - //SEG369 [179] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - //SEG370 [180] call div8u - //SEG371 [196] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG374 [181] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + //SEG375 [182] call div8u + //SEG376 [198] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] div8u_from_b4: - //SEG372 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG373 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG377 [198] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG378 [198] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG374 [181] (byte) div8u::return#2 ← (byte) div8u::return#0 + //SEG379 [183] (byte) div8u::return#2 ← (byte) div8u::return#0 jmp b9 - //SEG375 div8s::@9 + //SEG380 div8s::@9 b9: - //SEG376 [182] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa + //SEG381 [184] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa tay - //SEG377 [183] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 -- vbuz1_eq_0_then_la1 + //SEG382 [185] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b5 jmp b8 - //SEG378 div8s::@8 + //SEG383 div8s::@8 b8: - //SEG379 [184] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 -- vbsaa=vbsxx + //SEG384 [186] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 -- vbsaa=vbsxx txa - //SEG380 [185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 -- vbsxx=_neg_vbsaa + //SEG385 [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 -- vbsxx=_neg_vbsaa eor #$ff clc adc #1 tax - //SEG381 [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy + //SEG386 [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG382 [187] phi from div8s::@5 div8s::@8 to div8s::@return [phi:div8s::@5/div8s::@8->div8s::@return] + //SEG387 [189] phi from div8s::@5 div8s::@8 to div8s::@return [phi:div8s::@5/div8s::@8->div8s::@return] breturn_from_b5: breturn_from_b8: - //SEG383 [187] phi (signed byte) rem8s#3 = (signed byte~) rem8s#33 [phi:div8s::@5/div8s::@8->div8s::@return#0] -- register_copy - //SEG384 [187] phi (signed byte) div8s::return#2 = (signed byte~) div8s::return#7 [phi:div8s::@5/div8s::@8->div8s::@return#1] -- register_copy + //SEG388 [189] phi (signed byte) rem8s#3 = (signed byte~) rem8s#33 [phi:div8s::@5/div8s::@8->div8s::@return#0] -- register_copy + //SEG389 [189] phi (signed byte) div8s::return#2 = (signed byte~) div8s::return#7 [phi:div8s::@5/div8s::@8->div8s::@return#1] -- register_copy jmp breturn - //SEG385 div8s::@return + //SEG390 div8s::@return breturn: - //SEG386 [188] return + //SEG391 [190] return rts - //SEG387 div8s::@5 + //SEG392 div8s::@5 b5: - //SEG388 [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy + //SEG393 [191] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy tya - //SEG389 [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + //SEG394 [192] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 jmp breturn_from_b5 - //SEG390 div8s::@3 + //SEG395 div8s::@3 b3: - //SEG391 [191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx + //SEG396 [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG392 [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG397 [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG393 [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 + //SEG398 [195] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 jmp b4_from_b3 - //SEG394 div8s::@1 + //SEG399 div8s::@1 b1: - //SEG395 [194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy + //SEG400 [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG396 [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuyy=vbuaa + //SEG401 [197] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuyy=vbuaa tay - //SEG397 [174] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG402 [176] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] b2_from_b1: - //SEG398 [174] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG399 [174] phi (byte) div8s::neg#3 = (byte) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG403 [176] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG404 [176] phi (byte) div8s::neg#3 = (byte) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG400 div8u +//SEG405 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division // div8u(byte register(A) dividend, byte register(X) divisor) div8u: { - //SEG401 [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa + //SEG406 [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa sta divr8u.dividend - //SEG402 [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx + //SEG407 [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx stx divr8u.divisor - //SEG403 [199] call divr8u - //SEG404 [203] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG408 [201] call divr8u + //SEG409 [205] phi from div8u to divr8u [phi:div8u->divr8u] divr8u_from_div8u: jsr divr8u - //SEG405 [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 + //SEG410 [202] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 lda divr8u.return jmp b1 - //SEG406 div8u::@1 + //SEG411 div8u::@1 b1: - //SEG407 [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 + //SEG412 [203] (byte) div8u::return#0 ← (byte) divr8u::return#0 jmp breturn - //SEG408 div8u::@return + //SEG413 div8u::@return breturn: - //SEG409 [202] return + //SEG414 [204] return rts } -//SEG410 divr8u +//SEG415 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u @@ -8363,257 +8412,257 @@ divr8u: { .label divisor = $20 .label quotient = $17 .label return = $17 - //SEG411 [204] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG416 [206] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] b1_from_divr8u: - //SEG412 [204] phi (byte) divr8u::i#2 = (byte) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 + //SEG417 [206] phi (byte) divr8u::i#2 = (byte) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG413 [204] phi (byte) divr8u::quotient#3 = (byte) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG418 [206] phi (byte) divr8u::quotient#3 = (byte) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 lda #0 sta quotient - //SEG414 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG415 [204] phi (byte) divr8u::rem#4 = (byte) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 + //SEG419 [206] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG420 [206] phi (byte) divr8u::rem#4 = (byte) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG416 [204] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG421 [206] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] b1_from_b3: - //SEG417 [204] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG418 [204] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG419 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG420 [204] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG422 [206] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG423 [206] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG424 [206] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG425 [206] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy jmp b1 - //SEG421 divr8u::@1 + //SEG426 divr8u::@1 b1: - //SEG422 [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 -- vbuyy=vbuyy_rol_1 + //SEG427 [207] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG423 [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 + //SEG428 [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and dividend - //SEG424 [207] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 + //SEG429 [209] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG425 divr8u::@4 + //SEG430 divr8u::@4 b4: - //SEG426 [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 -- vbuyy=vbuyy_bor_vbuc1 + //SEG431 [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 -- vbuyy=vbuyy_bor_vbuc1 tya ora #1 tay - //SEG427 [209] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG432 [211] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] b2_from_b1: b2_from_b4: - //SEG428 [209] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG433 [211] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy jmp b2 - //SEG429 divr8u::@2 + //SEG434 divr8u::@2 b2: - //SEG430 [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 + //SEG435 [212] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG431 [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 -- vbuz1=vbuz1_rol_1 + //SEG436 [213] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG432 [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 + //SEG437 [214] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 cpy divisor bcc b3_from_b2 jmp b5 - //SEG433 divr8u::@5 + //SEG438 divr8u::@5 b5: - //SEG434 [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG439 [215] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG435 [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 + //SEG440 [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 tya sec sbc divisor tay - //SEG436 [215] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG441 [217] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] b3_from_b2: b3_from_b5: - //SEG437 [215] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG438 [215] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG442 [217] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG443 [217] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy jmp b3 - //SEG439 divr8u::@3 + //SEG444 divr8u::@3 b3: - //SEG440 [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx + //SEG445 [218] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG441 [217] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG446 [219] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b3 jmp b6 - //SEG442 divr8u::@6 + //SEG447 divr8u::@6 b6: - //SEG443 [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy + //SEG448 [220] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy tya tax jmp breturn - //SEG444 divr8u::@return + //SEG449 divr8u::@return breturn: - //SEG445 [219] return + //SEG450 [221] return rts } -//SEG446 test_16u +//SEG451 test_16u test_16u: { .label dividend = 5 .label divisor = $e .label res = $10 .label i = $18 - //SEG447 [221] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG452 [223] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] b1_from_test_16u: - //SEG448 [221] phi (byte) test_16u::i#10 = (byte) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG453 [223] phi (byte) test_16u::i#10 = (byte) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG449 [221] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] + //SEG454 [223] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] b1_from_b10: - //SEG450 [221] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy + //SEG455 [223] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy jmp b1 - //SEG451 test_16u::@1 + //SEG456 test_16u::@1 b1: - //SEG452 [222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG457 [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG453 [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuxx + //SEG458 [225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuxx lda dividends,x sta dividend lda dividends+1,x sta dividend+1 - //SEG454 [224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuxx + //SEG459 [226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuxx lda divisors,x sta divisor lda divisors+1,x sta divisor+1 - //SEG455 [225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - //SEG456 [226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - //SEG457 [227] call div16u + //SEG460 [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + //SEG461 [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + //SEG462 [229] call div16u jsr div16u - //SEG458 [228] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG463 [230] (word) div16u::return#2 ← (word) div16u::return#0 jmp b2 - //SEG459 test_16u::@2 + //SEG464 test_16u::@2 b2: - //SEG460 [229] (word) test_16u::res#0 ← (word) div16u::return#2 - //SEG461 [230] (word) print_word::w#1 ← (word) test_16u::dividend#0 - //SEG462 [231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG465 [231] (word) test_16u::res#0 ← (word) div16u::return#2 + //SEG466 [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 + //SEG467 [233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG463 [232] call print_word - //SEG464 [59] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] + //SEG468 [234] call print_word + //SEG469 [65] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] print_word_from_b2: - //SEG465 [59] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#172 [phi:test_16u::@2->print_word#0] -- register_copy - //SEG466 [59] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy + //SEG470 [65] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#173 [phi:test_16u::@2->print_word#0] -- register_copy + //SEG471 [65] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy jsr print_word - //SEG467 [233] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] + //SEG472 [235] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] b3_from_b2: jmp b3 - //SEG468 test_16u::@3 + //SEG473 test_16u::@3 b3: - //SEG469 [234] call print_str - //SEG470 [77] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] + //SEG474 [236] call print_str + //SEG475 [79] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] print_str_from_b3: - //SEG471 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG476 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG472 test_16u::@4 + //SEG477 test_16u::@4 b4: - //SEG473 [235] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG478 [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG474 [236] call print_word - //SEG475 [59] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] + //SEG479 [238] call print_word + //SEG480 [65] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] print_word_from_b4: - //SEG476 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy - //SEG477 [59] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy + //SEG481 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@4->print_word#0] -- register_copy + //SEG482 [65] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy jsr print_word - //SEG478 [237] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] + //SEG483 [239] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] b5_from_b4: jmp b5 - //SEG479 test_16u::@5 + //SEG484 test_16u::@5 b5: - //SEG480 [238] call print_str - //SEG481 [77] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] + //SEG485 [240] call print_str + //SEG486 [79] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] print_str_from_b5: - //SEG482 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG487 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG483 test_16u::@6 + //SEG488 test_16u::@6 b6: - //SEG484 [239] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG489 [241] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG485 [240] call print_word - //SEG486 [59] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] + //SEG490 [242] call print_word + //SEG491 [65] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] print_word_from_b6: - //SEG487 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy - //SEG488 [59] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy + //SEG492 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@6->print_word#0] -- register_copy + //SEG493 [65] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy jsr print_word - //SEG489 [241] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] + //SEG494 [243] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] b7_from_b6: jmp b7 - //SEG490 test_16u::@7 + //SEG495 test_16u::@7 b7: - //SEG491 [242] call print_str - //SEG492 [77] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] + //SEG496 [244] call print_str + //SEG497 [79] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] print_str_from_b7: - //SEG493 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG498 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG494 test_16u::@8 + //SEG499 test_16u::@8 b8: - //SEG495 [243] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG500 [245] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG496 [244] call print_word - //SEG497 [59] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] + //SEG501 [246] call print_word + //SEG502 [65] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] print_word_from_b8: - //SEG498 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy - //SEG499 [59] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy + //SEG503 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@8->print_word#0] -- register_copy + //SEG504 [65] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy jsr print_word - //SEG500 [245] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] + //SEG505 [247] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] b9_from_b8: jmp b9 - //SEG501 test_16u::@9 + //SEG506 test_16u::@9 b9: - //SEG502 [246] call print_ln - //SEG503 [45] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] + //SEG507 [248] call print_ln + //SEG508 [45] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] print_ln_from_b9: - //SEG504 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy + //SEG509 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG505 test_16u::@10 + //SEG510 test_16u::@10 b10: - //SEG506 [247] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 + //SEG511 [249] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG507 [248] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG512 [250] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG508 test_16u::@return + //SEG513 test_16u::@return breturn: - //SEG509 [249] return + //SEG514 [251] return rts dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG510 div16u +//SEG515 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -8623,229 +8672,229 @@ div16u: { .label return = $10 .label dividend = 5 .label divisor = $e - //SEG511 [250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + //SEG516 [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG512 [251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - //SEG513 [252] call divr16u - //SEG514 [114] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG517 [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + //SEG518 [254] call divr16u + //SEG519 [116] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: - //SEG515 [114] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG516 [114] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG520 [116] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG521 [116] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy jsr divr16u - //SEG517 [253] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG522 [255] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b1 - //SEG518 div16u::@1 + //SEG523 div16u::@1 b1: - //SEG519 [254] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG524 [256] (word) div16u::return#0 ← (word) divr16u::return#2 jmp breturn - //SEG520 div16u::@return + //SEG525 div16u::@return breturn: - //SEG521 [255] return + //SEG526 [257] return rts } -//SEG522 test_8u +//SEG527 test_8u test_8u: { - .label dividend = 7 + .label dividend = 9 .label divisor = $21 .label res = $22 .label i = $19 - //SEG523 [257] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG528 [259] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] b1_from_test_8u: - //SEG524 [257] phi (byte*) print_line_cursor#41 = (byte*) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG529 [259] phi (byte*) print_line_cursor#41 = (byte*) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG525 [257] phi (byte*) print_char_cursor#138 = (byte*) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG530 [259] phi (byte*) print_char_cursor#141 = (byte*) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG526 [257] phi (byte) test_8u::i#10 = (byte) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG531 [259] phi (byte) test_8u::i#10 = (byte) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG527 test_8u::@1 + //SEG532 test_8u::@1 b1: - //SEG528 [258] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG533 [260] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG529 [259] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG534 [261] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG530 [260] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 + //SEG535 [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 lda dividend - //SEG531 [261] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 + //SEG536 [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 ldx divisor - //SEG532 [262] call div8u - //SEG533 [196] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG537 [264] call div8u + //SEG538 [198] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] div8u_from_b1: - //SEG534 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG535 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG539 [198] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG540 [198] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG536 [263] (byte) div8u::return#3 ← (byte) div8u::return#0 + //SEG541 [265] (byte) div8u::return#3 ← (byte) div8u::return#0 jmp b2 - //SEG537 test_8u::@2 + //SEG542 test_8u::@2 b2: - //SEG538 [264] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa + //SEG543 [266] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa sta res - //SEG539 [265] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - //SEG540 [266] call print_byte - //SEG541 [65] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] + //SEG544 [267] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + //SEG545 [268] call print_byte + //SEG546 [71] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] print_byte_from_b2: - //SEG542 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy - //SEG543 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy + //SEG547 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#141 [phi:test_8u::@2->print_byte#0] -- register_copy + //SEG548 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy jsr print_byte - //SEG544 [267] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] + //SEG549 [269] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] b3_from_b2: jmp b3 - //SEG545 test_8u::@3 + //SEG550 test_8u::@3 b3: - //SEG546 [268] call print_str - //SEG547 [77] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] + //SEG551 [270] call print_str + //SEG552 [79] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] print_str_from_b3: - //SEG548 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG553 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG549 test_8u::@4 + //SEG554 test_8u::@4 b4: - //SEG550 [269] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG555 [271] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG551 [270] call print_byte - //SEG552 [65] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] + //SEG556 [272] call print_byte + //SEG557 [71] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] print_byte_from_b4: - //SEG553 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy - //SEG554 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy + //SEG558 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@4->print_byte#0] -- register_copy + //SEG559 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy jsr print_byte - //SEG555 [271] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] + //SEG560 [273] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] b5_from_b4: jmp b5 - //SEG556 test_8u::@5 + //SEG561 test_8u::@5 b5: - //SEG557 [272] call print_str - //SEG558 [77] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] + //SEG562 [274] call print_str + //SEG563 [79] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] print_str_from_b5: - //SEG559 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG564 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG560 test_8u::@6 + //SEG565 test_8u::@6 b6: - //SEG561 [273] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG566 [275] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG562 [274] call print_byte - //SEG563 [65] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] + //SEG567 [276] call print_byte + //SEG568 [71] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] print_byte_from_b6: - //SEG564 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy - //SEG565 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy + //SEG569 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@6->print_byte#0] -- register_copy + //SEG570 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy jsr print_byte - //SEG566 [275] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] + //SEG571 [277] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] b7_from_b6: jmp b7 - //SEG567 test_8u::@7 + //SEG572 test_8u::@7 b7: - //SEG568 [276] call print_str - //SEG569 [77] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] + //SEG573 [278] call print_str + //SEG574 [79] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] print_str_from_b7: - //SEG570 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG575 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG571 test_8u::@8 + //SEG576 test_8u::@8 b8: - //SEG572 [277] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx + //SEG577 [279] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx stx print_byte.b - //SEG573 [278] call print_byte - //SEG574 [65] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] + //SEG578 [280] call print_byte + //SEG579 [71] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] print_byte_from_b8: - //SEG575 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy - //SEG576 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy + //SEG580 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@8->print_byte#0] -- register_copy + //SEG581 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy jsr print_byte - //SEG577 [279] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] + //SEG582 [281] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] b9_from_b8: jmp b9 - //SEG578 test_8u::@9 + //SEG583 test_8u::@9 b9: - //SEG579 [280] call print_ln - //SEG580 [45] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] + //SEG584 [282] call print_ln + //SEG585 [45] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] print_ln_from_b9: - //SEG581 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy + //SEG586 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG582 test_8u::@10 + //SEG587 test_8u::@10 b10: - //SEG583 [281] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG588 [283] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG584 [282] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG589 [284] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b11 jmp breturn - //SEG585 test_8u::@return + //SEG590 test_8u::@return breturn: - //SEG586 [283] return + //SEG591 [285] return rts - //SEG587 test_8u::@11 + //SEG592 test_8u::@11 b11: - //SEG588 [284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG593 [286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG589 [257] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] + //SEG594 [259] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] b1_from_b11: - //SEG590 [257] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy - //SEG591 [257] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy - //SEG592 [257] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy + //SEG595 [259] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy + //SEG596 [259] phi (byte*) print_char_cursor#141 = (byte*~) print_char_cursor#190 [phi:test_8u::@11->test_8u::@1#1] -- register_copy + //SEG597 [259] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy jmp b1 dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG593 print_cls +//SEG598 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $1a - //SEG594 [286] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG599 [288] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG595 [286] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG600 [288] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG596 [286] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG601 [288] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG597 [286] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG602 [288] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG598 print_cls::@1 + //SEG603 print_cls::@1 b1: - //SEG599 [287] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG604 [289] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG600 [288] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG605 [290] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG601 [289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG606 [291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -8853,12 +8902,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG602 print_cls::@return + //SEG607 print_cls::@return breturn: - //SEG603 [290] return + //SEG608 [292] return rts } -//SEG604 File Data +//SEG609 File Data print_hextab: .text "0123456789abcdef" str: .text " / @" str1: .text " = @" @@ -8885,15 +8934,16 @@ Removing instruction jmp b10 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 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 @@ -8986,6 +9036,7 @@ Replacing label b1_from_b10 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_b2 with b1 Replacing label breturn_from_b5 with breturn Replacing label b4_from_b3 with b4 @@ -9027,11 +9078,13 @@ Removing instruction b9_from_b8: Removing instruction print_ln_from_b9: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: +Removing instruction print_word_from_b2: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: -Removing instruction print_word_from_b1: +Removing instruction print_char_from_b1: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: Removing instruction breturn: @@ -9119,9 +9172,10 @@ Removing instruction b9: Removing instruction b10: Removing instruction breturn: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: +Removing instruction breturn: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -9131,7 +9185,6 @@ Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: Removing instruction breturn: -Removing instruction breturn: Removing instruction b1: Removing instruction b6: Removing instruction b9: @@ -9426,35 +9479,34 @@ FINAL SYMBOL TABLE (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp ZP_BYTE:7 4.0 -(byte) print_byte::b#1 b zp ZP_BYTE:7 4.0 -(byte) print_byte::b#2 b zp ZP_BYTE:7 4.0 -(byte) print_byte::b#3 b zp ZP_BYTE:7 22.0 -(byte) print_byte::b#4 b zp ZP_BYTE:7 22.0 -(byte) print_byte::b#5 b zp ZP_BYTE:7 22.0 -(byte) print_byte::b#6 b zp ZP_BYTE:7 22.0 -(byte) print_byte::b#7 b zp ZP_BYTE:7 13.5 +(byte) print_byte::b#0 b zp ZP_BYTE:9 4.0 +(byte) print_byte::b#1 b zp ZP_BYTE:9 4.0 +(byte) print_byte::b#2 b zp ZP_BYTE:9 4.0 +(byte) print_byte::b#3 b zp ZP_BYTE:9 22.0 +(byte) print_byte::b#4 b zp ZP_BYTE:9 22.0 +(byte) print_byte::b#5 b zp ZP_BYTE:9 22.0 +(byte) print_byte::b#6 b zp ZP_BYTE:9 22.0 +(byte) print_byte::b#7 b zp ZP_BYTE:9 13.5 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#3 reg byte a 4.0 (byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#6 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:8 101.0 -(byte*) print_char_cursor#128 print_char_cursor zp ZP_WORD:8 15.607142857142856 -(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:8 3.0 -(byte*) print_char_cursor#131 print_char_cursor zp ZP_WORD:8 15.999999999999998 -(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:8 12.0 -(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:8 24.0 -(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:8 17.333333333333332 -(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:8 2.4444444444444446 -(byte*~) print_char_cursor#161 print_char_cursor zp ZP_WORD:8 22.0 -(byte*~) print_char_cursor#167 print_char_cursor zp ZP_WORD:8 22.0 -(byte*~) print_char_cursor#172 print_char_cursor zp ZP_WORD:8 22.0 -(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:8 1.9152542372881352 -(byte*~) print_char_cursor#188 print_char_cursor zp ZP_WORD:8 22.0 -(byte*) print_char_cursor#82 print_char_cursor zp ZP_WORD:8 7.0 +(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:7 101.0 +(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:7 15.607142857142856 +(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:7 12.0 +(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:7 12.0 +(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:7 24.0 +(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:7 17.333333333333332 +(byte*) print_char_cursor#141 print_char_cursor zp ZP_WORD:7 2.4444444444444446 +(byte*~) print_char_cursor#164 print_char_cursor zp ZP_WORD:7 22.0 +(byte*~) print_char_cursor#168 print_char_cursor zp ZP_WORD:7 22.0 +(byte*~) print_char_cursor#173 print_char_cursor zp ZP_WORD:7 22.0 +(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:7 1.8225806451612903 +(byte*~) print_char_cursor#190 print_char_cursor zp ZP_WORD:7 22.0 +(byte*) print_char_cursor#84 print_char_cursor zp ZP_WORD:7 8.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -9478,13 +9530,13 @@ FINAL SYMBOL TABLE (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp ZP_BYTE:7 4.0 -(signed byte) print_sbyte::b#1 b zp ZP_BYTE:7 11.0 -(signed byte) print_sbyte::b#10 b zp ZP_BYTE:7 8.333333333333332 -(signed byte) print_sbyte::b#2 b zp ZP_BYTE:7 22.0 -(signed byte) print_sbyte::b#3 b zp ZP_BYTE:7 22.0 -(signed byte) print_sbyte::b#4 b zp ZP_BYTE:7 22.0 -(signed byte) print_sbyte::b#7 b zp ZP_BYTE:7 4.0 +(signed byte) print_sbyte::b#0 b zp ZP_BYTE:9 4.0 +(signed byte) print_sbyte::b#1 b zp ZP_BYTE:9 11.0 +(signed byte) print_sbyte::b#10 b zp ZP_BYTE:9 8.333333333333332 +(signed byte) print_sbyte::b#2 b zp ZP_BYTE:9 22.0 +(signed byte) print_sbyte::b#3 b zp ZP_BYTE:9 22.0 +(signed byte) print_sbyte::b#4 b zp ZP_BYTE:9 22.0 +(signed byte) print_sbyte::b#7 b zp ZP_BYTE:9 4.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 @@ -9498,15 +9550,16 @@ FINAL SYMBOL TABLE (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:5 4.0 (signed word) print_sword::w#1 w zp ZP_WORD:5 11.0 +(signed word) print_sword::w#10 w zp ZP_WORD:5 8.333333333333332 (signed word) print_sword::w#2 w zp ZP_WORD:5 22.0 (signed word) print_sword::w#3 w zp ZP_WORD:5 22.0 (signed word) print_sword::w#4 w zp ZP_WORD:5 22.0 -(signed word) print_sword::w#5 w zp ZP_WORD:5 12.5 -(signed word) print_sword::w#6 w zp ZP_WORD:5 4.0 +(signed word) print_sword::w#7 w zp ZP_WORD:5 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -9597,7 +9650,7 @@ FINAL SYMBOL TABLE (label) test_8s::@9 (label) test_8s::@return (signed byte) test_8s::dividend -(signed byte) test_8s::dividend#0 dividend zp ZP_BYTE:7 4.714285714285714 +(signed byte) test_8s::dividend#0 dividend zp ZP_BYTE:9 4.714285714285714 (signed byte[]) test_8s::dividends (const signed byte[]) test_8s::dividends#0 dividends = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f } (signed byte) test_8s::divisor @@ -9623,7 +9676,7 @@ FINAL SYMBOL TABLE (label) test_8u::@9 (label) test_8u::@return (byte) test_8u::dividend -(byte) test_8u::dividend#0 dividend zp ZP_BYTE:7 4.714285714285714 +(byte) test_8u::dividend#0 dividend zp ZP_BYTE:9 4.714285714285714 (byte[]) test_8u::dividends (const byte[]) test_8u::dividends#0 dividends = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff } (byte) test_8u::divisor @@ -9638,10 +9691,10 @@ FINAL SYMBOL TABLE zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] -zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 ] -zp ZP_BYTE:7 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ] -reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -zp ZP_WORD:8 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] +zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 ] +reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +zp ZP_WORD:7 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] +zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ] zp ZP_WORD:10 [ print_str::str#13 print_str::str#15 print_str::str#0 ] zp ZP_WORD:12 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::dividendu#1 ] zp ZP_WORD:14 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::divisoru#1 test_16u::divisor#0 div16u::divisor#0 ] @@ -9692,7 +9745,7 @@ zp ZP_BYTE:34 [ test_8u::res#0 ] FINAL ASSEMBLER -Score: 33156 +Score: 33167 //SEG0 File Comments // Test the binary division library @@ -9701,7 +9754,7 @@ Score: 33156 :BasicUpstart(main) .pc = $80d "Program" //SEG2 Global Constants & labels - .label print_char_cursor = 8 + .label print_char_cursor = 7 .label print_line_cursor = 3 .label rem16u = $12 .label rem16s = $12 @@ -9715,22 +9768,22 @@ Score: 33156 //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [285] phi from main to print_cls [phi:main->print_cls] + //SEG12 [287] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 main::@1 //SEG15 [7] call test_8u - //SEG16 [256] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG16 [258] phi from main::@1 to test_8u [phi:main::@1->test_8u] jsr test_8u //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG18 main::@2 //SEG19 [9] call test_16u - //SEG20 [220] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG20 [222] phi from main::@2 to test_16u [phi:main::@2->test_16u] jsr test_16u //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG22 main::@3 //SEG23 [11] call test_8s - //SEG24 [132] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG24 [134] phi from main::@3 to test_8s [phi:main::@3->test_8s] jsr test_8s //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG26 main::@4 @@ -9777,21 +9830,21 @@ test_16s: { //SEG44 test_16s::@2 //SEG45 [24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 //SEG46 [25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - //SEG47 [26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG47 [26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG48 [27] call print_sword //SEG49 [50] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] - //SEG50 [50] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#161 [phi:test_16s::@2->print_sword#0] -- register_copy - //SEG51 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy + //SEG50 [50] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#164 [phi:test_16s::@2->print_sword#0] -- register_copy + //SEG51 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy jsr print_sword //SEG52 [28] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] //SEG53 test_16s::@3 //SEG54 [29] call print_str - //SEG55 [77] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] - //SEG56 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG55 [79] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] + //SEG56 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 lda #str @@ -9805,14 +9858,14 @@ test_16s: { sta print_sword.w+1 //SEG59 [31] call print_sword //SEG60 [50] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] - //SEG61 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy - //SEG62 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy + //SEG61 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@4->print_sword#0] -- register_copy + //SEG62 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy jsr print_sword //SEG63 [32] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] //SEG64 test_16s::@5 //SEG65 [33] call print_str - //SEG66 [77] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] - //SEG67 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG66 [79] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] + //SEG67 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 @@ -9826,14 +9879,14 @@ test_16s: { sta print_sword.w+1 //SEG70 [35] call print_sword //SEG71 [50] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] - //SEG72 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy - //SEG73 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy + //SEG72 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@6->print_sword#0] -- register_copy + //SEG73 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy jsr print_sword //SEG74 [36] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] //SEG75 test_16s::@7 //SEG76 [37] call print_str - //SEG77 [77] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] - //SEG78 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG77 [79] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] + //SEG78 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 @@ -9847,8 +9900,8 @@ test_16s: { sta print_sword.w+1 //SEG81 [39] call print_sword //SEG82 [50] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] - //SEG83 [50] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy - //SEG84 [50] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy + //SEG83 [50] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:test_16s::@8->print_sword#0] -- register_copy + //SEG84 [50] phi (signed word) print_sword::w#10 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy jsr print_sword //SEG85 [40] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] //SEG86 test_16s::@9 @@ -9884,7 +9937,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG100 [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG100 [48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -9902,19 +9955,41 @@ print_ln: { // print_sword(signed word zeropage(5) w) print_sword: { .label w = 5 - //SEG104 [51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG104 [51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG105 [52] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG106 print_sword::@2 + bmi b1 + //SEG105 [52] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG106 print_sword::@3 //SEG107 [53] call print_char - //SEG108 [73] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG109 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG110 [73] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG108 [61] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG109 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG110 [61] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG111 [54] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG112 [54] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG113 print_sword::@2 + b2: + //SEG114 [55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + //SEG115 [56] call print_word + //SEG116 [65] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + //SEG117 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG118 [65] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + //SEG119 print_sword::@return + //SEG120 [57] return + rts + //SEG121 [58] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG122 print_sword::@1 + b1: + //SEG123 [59] call print_char + //SEG124 [61] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG125 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG126 [61] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG111 print_sword::@3 - //SEG112 [54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + //SEG127 print_sword::@4 + //SEG128 [60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -9922,135 +9997,122 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG113 [55] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG114 [55] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG115 [55] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG116 print_sword::@1 - b1: - //SEG117 [56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 - //SEG118 [57] call print_word - //SEG119 [59] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG120 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG121 [59] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - //SEG122 print_sword::@return - //SEG123 [58] return + jmp b2 +} +//SEG129 print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + //SEG130 [62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + //SEG131 [63] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: + //SEG132 print_char::@return + //SEG133 [64] return rts } -//SEG124 print_word +//SEG134 print_word // Print a word as HEX // print_word(word zeropage(5) w) print_word: { .label w = 5 - //SEG125 [60] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG135 [66] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG126 [61] call print_byte - //SEG127 [65] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG128 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG129 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG136 [67] call print_byte + //SEG137 [71] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG138 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#138 [phi:print_word->print_byte#0] -- register_copy + //SEG139 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG130 print_word::@1 - //SEG131 [62] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG140 print_word::@1 + //SEG141 [68] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG132 [63] call print_byte - //SEG133 [65] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG134 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG135 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG142 [69] call print_byte + //SEG143 [71] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG144 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG145 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG136 print_word::@return - //SEG137 [64] return + //SEG146 print_word::@return + //SEG147 [70] return rts } -//SEG138 print_byte +//SEG148 print_byte // Print a byte as HEX -// print_byte(byte zeropage(7) b) +// print_byte(byte zeropage(9) b) print_byte: { - .label b = 7 - //SEG139 [66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + .label b = 9 + //SEG149 [72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG140 [67] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG150 [73] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG141 [68] call print_char - //SEG142 [73] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG143 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG144 [73] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG151 [74] call print_char + //SEG152 [61] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG153 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy + //SEG154 [61] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG145 print_byte::@1 - //SEG146 [69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG155 print_byte::@1 + //SEG156 [75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG147 [70] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG157 [76] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG148 [71] call print_char - //SEG149 [73] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG150 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG151 [73] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG158 [77] call print_char + //SEG159 [61] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG160 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG161 [61] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG152 print_byte::@return - //SEG153 [72] return + //SEG162 print_byte::@return + //SEG163 [78] return rts } -//SEG154 print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - //SEG155 [74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - //SEG156 [75] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - //SEG157 print_char::@return - //SEG158 [76] return - rts -} -//SEG159 print_str +//SEG164 print_str // Print a zero-terminated string // print_str(byte* zeropage($a) str) print_str: { .label str = $a - //SEG160 [78] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG161 [78] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG162 [78] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG163 print_str::@1 + //SEG165 [80] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG166 [80] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#19 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG167 [80] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG168 print_str::@1 b1: - //SEG164 [79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG169 [81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG165 print_str::@return - //SEG166 [80] return + //SEG170 print_str::@return + //SEG171 [82] return rts - //SEG167 print_str::@2 + //SEG172 print_str::@2 b2: - //SEG168 [81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG173 [83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG169 [82] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG174 [84] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG170 [83] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG175 [85] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG171 div16s +//SEG176 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. @@ -10062,26 +10124,26 @@ div16s: { .label return = $10 .label dividend = 5 .label divisor = $1c - //SEG172 [84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + //SEG177 [86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG173 [85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG178 [87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG174 [86] call divr16s + //SEG179 [88] call divr16s jsr divr16s - //SEG175 [87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 - //SEG176 div16s::@1 - //SEG177 [88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 - //SEG178 div16s::@return - //SEG179 [89] return + //SEG180 [89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG181 div16s::@1 + //SEG182 [90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + //SEG183 div16s::@return + //SEG184 [91] return rts } -//SEG180 divr16s +//SEG185 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -10096,43 +10158,43 @@ divr16s: { .label return = $10 .label dividend = $c .label divisor = $e - //SEG181 [90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG186 [92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 - //SEG182 divr16s::@6 - //SEG183 [91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 - //SEG184 [92] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] - //SEG185 [92] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy - //SEG186 [92] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuyy=vbuc1 + //SEG187 divr16s::@6 + //SEG188 [93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + //SEG189 [94] phi from divr16s::@6 to divr16s::@2 [phi:divr16s::@6->divr16s::@2] + //SEG190 [94] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@6->divr16s::@2#0] -- register_copy + //SEG191 [94] phi (byte) divr16s::neg#3 = (byte) 0 [phi:divr16s::@6->divr16s::@2#1] -- vbuyy=vbuc1 ldy #0 - //SEG187 divr16s::@2 + //SEG192 divr16s::@2 b2: - //SEG188 [93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG193 [95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 - //SEG189 divr16s::@7 - //SEG190 [94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG191 [95] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] - //SEG192 [95] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy - //SEG193 [95] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy - //SEG194 divr16s::@4 + //SEG194 divr16s::@7 + //SEG195 [96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG196 [97] phi from divr16s::@3 divr16s::@7 to divr16s::@4 [phi:divr16s::@3/divr16s::@7->divr16s::@4] + //SEG197 [97] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@7->divr16s::@4#0] -- register_copy + //SEG198 [97] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@7->divr16s::@4#1] -- register_copy + //SEG199 divr16s::@4 b4: - //SEG195 [96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - //SEG196 [97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - //SEG197 [98] call divr16u - //SEG198 [114] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] - //SEG199 [114] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG200 [114] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG200 [98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + //SEG201 [99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + //SEG202 [100] call divr16u + //SEG203 [116] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG204 [116] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG205 [116] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy jsr divr16u - //SEG201 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG202 divr16s::@9 - //SEG203 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - //SEG204 [101] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuyy_eq_0_then_la1 + //SEG206 [101] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG207 divr16s::@9 + //SEG208 [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + //SEG209 [103] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -- vbuyy_eq_0_then_la1 cpy #0 beq breturn - //SEG205 divr16s::@8 - //SEG206 [102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 - //SEG207 [103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 -- vwsz1=_neg_vwsz1 + //SEG210 divr16s::@8 + //SEG211 [104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1 + //SEG212 [105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16 -- vwsz1=_neg_vwsz1 sec lda #0 sbc rem16s @@ -10140,7 +10202,7 @@ divr16s: { lda #0 sbc rem16s+1 sta rem16s+1 - //SEG208 [104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG213 [106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc return @@ -10148,19 +10210,19 @@ divr16s: { lda #0 sbc return+1 sta return+1 - //SEG209 [105] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] - //SEG210 [105] phi (signed word) rem16s#11 = (signed word~) rem16s#37 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy - //SEG211 [105] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@5/divr16s::@8->divr16s::@return#1] -- register_copy - //SEG212 divr16s::@return + //SEG214 [107] phi from divr16s::@5 divr16s::@8 to divr16s::@return [phi:divr16s::@5/divr16s::@8->divr16s::@return] + //SEG215 [107] phi (signed word) rem16s#11 = (signed word~) rem16s#37 [phi:divr16s::@5/divr16s::@8->divr16s::@return#0] -- register_copy + //SEG216 [107] phi (signed word) divr16s::return#2 = (signed word~) divr16s::return#7 [phi:divr16s::@5/divr16s::@8->divr16s::@return#1] -- register_copy + //SEG217 divr16s::@return breturn: - //SEG213 [106] return + //SEG218 [108] return rts - //SEG214 divr16s::@5 - //SEG215 [107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG216 [108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 - //SEG217 divr16s::@3 + //SEG219 divr16s::@5 + //SEG220 [109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG221 [110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + //SEG222 divr16s::@3 b3: - //SEG218 [109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG223 [111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc divisoru @@ -10168,15 +10230,15 @@ divr16s: { lda #0 sbc divisoru+1 sta divisoru+1 - //SEG219 [110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG224 [112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - //SEG220 [111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 + //SEG225 [113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1 jmp b4 - //SEG221 divr16s::@1 + //SEG226 divr16s::@1 b1: - //SEG222 [112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 + //SEG227 [114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 sec lda #0 sbc dividendu @@ -10184,14 +10246,14 @@ divr16s: { lda #0 sbc dividendu+1 sta dividendu+1 - //SEG223 [113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 - //SEG224 [92] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] - //SEG225 [92] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG226 [92] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuyy=vbuc1 + //SEG228 [115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1 + //SEG229 [94] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG230 [94] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG231 [94] phi (byte) divr16s::neg#3 = (byte) 1 [phi:divr16s::@1->divr16s::@2#1] -- vbuyy=vbuc1 ldy #1 jmp b2 } -//SEG227 divr16u +//SEG232 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -10203,50 +10265,50 @@ divr16u: { .label quotient = $10 .label return = $10 .label divisor = $e - //SEG228 [115] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG229 [115] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG233 [117] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG234 [117] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG230 [115] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG235 [117] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG231 [115] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG232 [115] phi (word) divr16u::rem#5 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG236 [117] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG237 [117] phi (word) divr16u::rem#5 = (byte) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 sta rem sta rem+1 - //SEG233 [115] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG234 [115] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG235 [115] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG236 [115] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG237 [115] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG238 divr16u::@1 + //SEG238 [117] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG239 [117] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG240 [117] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG241 [117] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG242 [117] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG243 divr16u::@1 b1: - //SEG239 [116] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG244 [118] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG240 [117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG245 [119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG241 [118] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG246 [120] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG242 [119] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG247 [121] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG243 divr16u::@4 - //SEG244 [120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG248 divr16u::@4 + //SEG249 [122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG245 [121] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG246 [121] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG247 divr16u::@2 + //SEG250 [123] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG251 [123] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG252 divr16u::@2 b2: - //SEG248 [122] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG253 [124] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG249 [123] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG254 [125] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG250 [124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG255 [126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3 @@ -10255,13 +10317,13 @@ divr16u: { cmp divisor bcc b3 !: - //SEG251 divr16u::@5 - //SEG252 [125] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG256 divr16u::@5 + //SEG257 [127] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG253 [126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG258 [128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -10269,179 +10331,179 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG254 [127] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG255 [127] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG256 [127] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG257 divr16u::@3 + //SEG259 [129] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG260 [129] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG261 [129] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG262 divr16u::@3 b3: - //SEG258 [128] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG263 [130] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG259 [129] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG264 [131] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG260 divr16u::@6 - //SEG261 [130] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG262 divr16u::@return - //SEG263 [131] return + //SEG265 divr16u::@6 + //SEG266 [132] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG267 divr16u::@return + //SEG268 [133] return rts } -//SEG264 test_8s +//SEG269 test_8s test_8s: { - .label dividend = 7 + .label dividend = 9 .label divisor = $1e .label res = $1f .label i = $14 - //SEG265 [133] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] - //SEG266 [133] phi (byte) test_8s::i#10 = (byte) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG270 [135] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG271 [135] phi (byte) test_8s::i#10 = (byte) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG267 [133] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] - //SEG268 [133] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy - //SEG269 test_8s::@1 + //SEG272 [135] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] + //SEG273 [135] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy + //SEG274 test_8s::@1 b1: - //SEG270 [134] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG275 [136] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG271 [135] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG276 [137] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 lda divisors,y sta divisor - //SEG272 [136] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 + //SEG277 [138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 ldy dividend - //SEG273 [137] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 + //SEG278 [139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 tax - //SEG274 [138] call div8s + //SEG279 [140] call div8s jsr div8s - //SEG275 [139] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 - //SEG276 test_8s::@2 - //SEG277 [140] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa + //SEG280 [141] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + //SEG281 test_8s::@2 + //SEG282 [142] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa sta res - //SEG278 [141] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - //SEG279 [142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG283 [143] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + //SEG284 [144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG280 [143] call print_sbyte - //SEG281 [161] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] - //SEG282 [161] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#167 [phi:test_8s::@2->print_sbyte#0] -- register_copy - //SEG283 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy + //SEG285 [145] call print_sbyte + //SEG286 [163] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] + //SEG287 [163] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#168 [phi:test_8s::@2->print_sbyte#0] -- register_copy + //SEG288 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG284 [144] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] - //SEG285 test_8s::@3 - //SEG286 [145] call print_str - //SEG287 [77] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] - //SEG288 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG289 [146] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] + //SEG290 test_8s::@3 + //SEG291 [147] call print_str + //SEG292 [79] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] + //SEG293 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG289 test_8s::@4 - //SEG290 [146] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG294 test_8s::@4 + //SEG295 [148] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG291 [147] call print_sbyte - //SEG292 [161] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] - //SEG293 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy - //SEG294 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy + //SEG296 [149] call print_sbyte + //SEG297 [163] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] + //SEG298 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@4->print_sbyte#0] -- register_copy + //SEG299 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG295 [148] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] - //SEG296 test_8s::@5 - //SEG297 [149] call print_str - //SEG298 [77] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] - //SEG299 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG300 [150] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] + //SEG301 test_8s::@5 + //SEG302 [151] call print_str + //SEG303 [79] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] + //SEG304 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG300 test_8s::@6 - //SEG301 [150] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG305 test_8s::@6 + //SEG306 [152] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG302 [151] call print_sbyte - //SEG303 [161] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] - //SEG304 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy - //SEG305 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy + //SEG307 [153] call print_sbyte + //SEG308 [163] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] + //SEG309 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@6->print_sbyte#0] -- register_copy + //SEG310 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG306 [152] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] - //SEG307 test_8s::@7 - //SEG308 [153] call print_str - //SEG309 [77] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] - //SEG310 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG311 [154] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] + //SEG312 test_8s::@7 + //SEG313 [155] call print_str + //SEG314 [79] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] + //SEG315 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG311 test_8s::@8 - //SEG312 [154] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx + //SEG316 test_8s::@8 + //SEG317 [156] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx stx print_sbyte.b - //SEG313 [155] call print_sbyte - //SEG314 [161] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] - //SEG315 [161] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy - //SEG316 [161] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy + //SEG318 [157] call print_sbyte + //SEG319 [163] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] + //SEG320 [163] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:test_8s::@8->print_sbyte#0] -- register_copy + //SEG321 [163] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG317 [156] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] - //SEG318 test_8s::@9 - //SEG319 [157] call print_ln - //SEG320 [45] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] - //SEG321 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy + //SEG322 [158] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] + //SEG323 test_8s::@9 + //SEG324 [159] call print_ln + //SEG325 [45] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] + //SEG326 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy jsr print_ln - //SEG322 test_8s::@10 - //SEG323 [158] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG327 test_8s::@10 + //SEG328 [160] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG324 [159] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG329 [161] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1 - //SEG325 test_8s::@return - //SEG326 [160] return + //SEG330 test_8s::@return + //SEG331 [162] return rts dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG327 print_sbyte +//SEG332 print_sbyte // Print a signed byte as HEX -// print_sbyte(signed byte zeropage(7) b) +// print_sbyte(signed byte zeropage(9) b) print_sbyte: { - .label b = 7 - //SEG328 [162] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + .label b = 9 + //SEG333 [164] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG329 [163] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG330 print_sbyte::@3 - //SEG331 [164] call print_char - //SEG332 [73] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG333 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG334 [73] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG334 [165] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG335 print_sbyte::@3 + //SEG336 [166] call print_char + //SEG337 [61] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG338 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#135 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG339 [61] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG335 [165] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] - //SEG336 [165] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy - //SEG337 print_sbyte::@2 + //SEG340 [167] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG341 [167] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG342 print_sbyte::@2 b2: - //SEG338 [166] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 - //SEG339 [167] call print_byte - //SEG340 [65] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG341 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG342 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG343 [168] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7 + //SEG344 [169] call print_byte + //SEG345 [71] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG346 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG347 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG343 print_sbyte::@return - //SEG344 [168] return + //SEG348 print_sbyte::@return + //SEG349 [170] return rts - //SEG345 [169] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG346 print_sbyte::@1 + //SEG350 [171] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG351 print_sbyte::@1 b1: - //SEG347 [170] call print_char - //SEG348 [73] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG349 [73] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG350 [73] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG352 [172] call print_char + //SEG353 [61] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG354 [61] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#135 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG355 [61] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG351 print_sbyte::@4 - //SEG352 [171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG356 print_sbyte::@4 + //SEG357 [173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -10449,7 +10511,7 @@ print_sbyte: { sta b jmp b2 } -//SEG353 div8s +//SEG358 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. @@ -10459,122 +10521,122 @@ print_sbyte: { // div8s(signed byte register(Y) dividend, signed byte register(X) divisor) div8s: { .label neg = $15 - //SEG354 [172] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 + //SEG359 [174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 cpy #0 bmi b1 - //SEG355 div8s::@6 - //SEG356 [173] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 - //SEG357 [174] phi from div8s::@6 to div8s::@2 [phi:div8s::@6->div8s::@2] - //SEG358 [174] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@6->div8s::@2#0] -- register_copy - //SEG359 [174] phi (byte) div8s::neg#3 = (byte) 0 [phi:div8s::@6->div8s::@2#1] -- vbuz1=vbuc1 + //SEG360 div8s::@6 + //SEG361 [175] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + //SEG362 [176] phi from div8s::@6 to div8s::@2 [phi:div8s::@6->div8s::@2] + //SEG363 [176] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@6->div8s::@2#0] -- register_copy + //SEG364 [176] phi (byte) div8s::neg#3 = (byte) 0 [phi:div8s::@6->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg - //SEG360 div8s::@2 + //SEG365 div8s::@2 b2: - //SEG361 [175] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 + //SEG366 [177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 cpx #0 bmi b3 - //SEG362 div8s::@7 - //SEG363 [176] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 - //SEG364 [177] phi from div8s::@3 div8s::@7 to div8s::@4 [phi:div8s::@3/div8s::@7->div8s::@4] - //SEG365 [177] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@7->div8s::@4#0] -- register_copy - //SEG366 [177] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@7->div8s::@4#1] -- register_copy - //SEG367 div8s::@4 + //SEG367 div8s::@7 + //SEG368 [178] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + //SEG369 [179] phi from div8s::@3 div8s::@7 to div8s::@4 [phi:div8s::@3/div8s::@7->div8s::@4] + //SEG370 [179] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@7->div8s::@4#0] -- register_copy + //SEG371 [179] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@7->div8s::@4#1] -- register_copy + //SEG372 div8s::@4 b4: - //SEG368 [178] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy + //SEG373 [180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy tya - //SEG369 [179] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - //SEG370 [180] call div8u - //SEG371 [196] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] - //SEG372 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG373 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG374 [181] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + //SEG375 [182] call div8u + //SEG376 [198] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG377 [198] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG378 [198] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG374 [181] (byte) div8u::return#2 ← (byte) div8u::return#0 - //SEG375 div8s::@9 - //SEG376 [182] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa + //SEG379 [183] (byte) div8u::return#2 ← (byte) div8u::return#0 + //SEG380 div8s::@9 + //SEG381 [184] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa tay - //SEG377 [183] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 -- vbuz1_eq_0_then_la1 + //SEG382 [185] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b5 - //SEG378 div8s::@8 - //SEG379 [184] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 -- vbsaa=vbsxx + //SEG383 div8s::@8 + //SEG384 [186] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17 -- vbsaa=vbsxx txa - //SEG380 [185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 -- vbsxx=_neg_vbsaa + //SEG385 [187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11 -- vbsxx=_neg_vbsaa eor #$ff clc adc #1 tax - //SEG381 [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy + //SEG386 [188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG382 [187] phi from div8s::@5 div8s::@8 to div8s::@return [phi:div8s::@5/div8s::@8->div8s::@return] - //SEG383 [187] phi (signed byte) rem8s#3 = (signed byte~) rem8s#33 [phi:div8s::@5/div8s::@8->div8s::@return#0] -- register_copy - //SEG384 [187] phi (signed byte) div8s::return#2 = (signed byte~) div8s::return#7 [phi:div8s::@5/div8s::@8->div8s::@return#1] -- register_copy - //SEG385 div8s::@return - //SEG386 [188] return + //SEG387 [189] phi from div8s::@5 div8s::@8 to div8s::@return [phi:div8s::@5/div8s::@8->div8s::@return] + //SEG388 [189] phi (signed byte) rem8s#3 = (signed byte~) rem8s#33 [phi:div8s::@5/div8s::@8->div8s::@return#0] -- register_copy + //SEG389 [189] phi (signed byte) div8s::return#2 = (signed byte~) div8s::return#7 [phi:div8s::@5/div8s::@8->div8s::@return#1] -- register_copy + //SEG390 div8s::@return + //SEG391 [190] return rts - //SEG387 div8s::@5 + //SEG392 div8s::@5 b5: - //SEG388 [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy + //SEG393 [191] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy tya - //SEG389 [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + //SEG394 [192] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 rts - //SEG390 div8s::@3 + //SEG395 div8s::@3 b3: - //SEG391 [191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx + //SEG396 [193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG392 [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG397 [194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG393 [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 + //SEG398 [195] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1 jmp b4 - //SEG394 div8s::@1 + //SEG399 div8s::@1 b1: - //SEG395 [194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy + //SEG400 [196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG396 [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuyy=vbuaa + //SEG401 [197] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1 -- vbuyy=vbuaa tay - //SEG397 [174] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] - //SEG398 [174] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG399 [174] phi (byte) div8s::neg#3 = (byte) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG402 [176] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG403 [176] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG404 [176] phi (byte) div8s::neg#3 = (byte) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG400 div8u +//SEG405 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division // div8u(byte register(A) dividend, byte register(X) divisor) div8u: { - //SEG401 [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa + //SEG406 [199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa sta divr8u.dividend - //SEG402 [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx + //SEG407 [200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx stx divr8u.divisor - //SEG403 [199] call divr8u - //SEG404 [203] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG408 [201] call divr8u + //SEG409 [205] phi from div8u to divr8u [phi:div8u->divr8u] jsr divr8u - //SEG405 [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 + //SEG410 [202] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 lda divr8u.return - //SEG406 div8u::@1 - //SEG407 [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 - //SEG408 div8u::@return - //SEG409 [202] return + //SEG411 div8u::@1 + //SEG412 [203] (byte) div8u::return#0 ← (byte) divr8u::return#0 + //SEG413 div8u::@return + //SEG414 [204] return rts } -//SEG410 divr8u +//SEG415 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u @@ -10585,203 +10647,203 @@ divr8u: { .label divisor = $20 .label quotient = $17 .label return = $17 - //SEG411 [204] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] - //SEG412 [204] phi (byte) divr8u::i#2 = (byte) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 + //SEG416 [206] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG417 [206] phi (byte) divr8u::i#2 = (byte) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG413 [204] phi (byte) divr8u::quotient#3 = (byte) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG418 [206] phi (byte) divr8u::quotient#3 = (byte) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 txa sta quotient - //SEG414 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG415 [204] phi (byte) divr8u::rem#4 = (byte) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 + //SEG419 [206] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG420 [206] phi (byte) divr8u::rem#4 = (byte) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 tay - //SEG416 [204] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] - //SEG417 [204] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG418 [204] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG419 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG420 [204] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy - //SEG421 divr8u::@1 + //SEG421 [206] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG422 [206] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG423 [206] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG424 [206] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG425 [206] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG426 divr8u::@1 b1: - //SEG422 [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 -- vbuyy=vbuyy_rol_1 + //SEG427 [207] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1 -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG423 [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 + //SEG428 [208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and dividend - //SEG424 [207] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 + //SEG429 [209] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG425 divr8u::@4 - //SEG426 [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 -- vbuyy=vbuyy_bor_vbuc1 + //SEG430 divr8u::@4 + //SEG431 [210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1 -- vbuyy=vbuyy_bor_vbuc1 tya ora #1 tay - //SEG427 [209] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] - //SEG428 [209] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy - //SEG429 divr8u::@2 + //SEG432 [211] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG433 [211] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG434 divr8u::@2 b2: - //SEG430 [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 + //SEG435 [212] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG431 [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 -- vbuz1=vbuz1_rol_1 + //SEG436 [213] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG432 [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 + //SEG437 [214] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 cpy divisor bcc b3 - //SEG433 divr8u::@5 - //SEG434 [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG438 divr8u::@5 + //SEG439 [215] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG435 [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 + //SEG440 [216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 tya sec sbc divisor tay - //SEG436 [215] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] - //SEG437 [215] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG438 [215] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy - //SEG439 divr8u::@3 + //SEG441 [217] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG442 [217] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG443 [217] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG444 divr8u::@3 b3: - //SEG440 [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx + //SEG445 [218] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG441 [217] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG446 [219] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG442 divr8u::@6 - //SEG443 [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy + //SEG447 divr8u::@6 + //SEG448 [220] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy tya tax - //SEG444 divr8u::@return - //SEG445 [219] return + //SEG449 divr8u::@return + //SEG450 [221] return rts } -//SEG446 test_16u +//SEG451 test_16u test_16u: { .label dividend = 5 .label divisor = $e .label res = $10 .label i = $18 - //SEG447 [221] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] - //SEG448 [221] phi (byte) test_16u::i#10 = (byte) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG452 [223] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG453 [223] phi (byte) test_16u::i#10 = (byte) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG449 [221] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] - //SEG450 [221] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy - //SEG451 test_16u::@1 + //SEG454 [223] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] + //SEG455 [223] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy + //SEG456 test_16u::@1 b1: - //SEG452 [222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG457 [224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG453 [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuxx + //SEG458 [225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuxx lda dividends,x sta dividend lda dividends+1,x sta dividend+1 - //SEG454 [224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuxx + //SEG459 [226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuxx lda divisors,x sta divisor lda divisors+1,x sta divisor+1 - //SEG455 [225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - //SEG456 [226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - //SEG457 [227] call div16u + //SEG460 [227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + //SEG461 [228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + //SEG462 [229] call div16u jsr div16u - //SEG458 [228] (word) div16u::return#2 ← (word) div16u::return#0 - //SEG459 test_16u::@2 - //SEG460 [229] (word) test_16u::res#0 ← (word) div16u::return#2 - //SEG461 [230] (word) print_word::w#1 ← (word) test_16u::dividend#0 - //SEG462 [231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG463 [230] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG464 test_16u::@2 + //SEG465 [231] (word) test_16u::res#0 ← (word) div16u::return#2 + //SEG466 [232] (word) print_word::w#1 ← (word) test_16u::dividend#0 + //SEG467 [233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG463 [232] call print_word - //SEG464 [59] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] - //SEG465 [59] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#172 [phi:test_16u::@2->print_word#0] -- register_copy - //SEG466 [59] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy + //SEG468 [234] call print_word + //SEG469 [65] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] + //SEG470 [65] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#173 [phi:test_16u::@2->print_word#0] -- register_copy + //SEG471 [65] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy jsr print_word - //SEG467 [233] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] - //SEG468 test_16u::@3 - //SEG469 [234] call print_str - //SEG470 [77] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] - //SEG471 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG472 [235] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] + //SEG473 test_16u::@3 + //SEG474 [236] call print_str + //SEG475 [79] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] + //SEG476 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG472 test_16u::@4 - //SEG473 [235] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG477 test_16u::@4 + //SEG478 [237] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG474 [236] call print_word - //SEG475 [59] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] - //SEG476 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy - //SEG477 [59] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy + //SEG479 [238] call print_word + //SEG480 [65] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] + //SEG481 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@4->print_word#0] -- register_copy + //SEG482 [65] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy jsr print_word - //SEG478 [237] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] - //SEG479 test_16u::@5 - //SEG480 [238] call print_str - //SEG481 [77] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] - //SEG482 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG483 [239] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] + //SEG484 test_16u::@5 + //SEG485 [240] call print_str + //SEG486 [79] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] + //SEG487 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG483 test_16u::@6 - //SEG484 [239] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG488 test_16u::@6 + //SEG489 [241] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG485 [240] call print_word - //SEG486 [59] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] - //SEG487 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy - //SEG488 [59] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy + //SEG490 [242] call print_word + //SEG491 [65] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] + //SEG492 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@6->print_word#0] -- register_copy + //SEG493 [65] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy jsr print_word - //SEG489 [241] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] - //SEG490 test_16u::@7 - //SEG491 [242] call print_str - //SEG492 [77] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] - //SEG493 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG494 [243] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] + //SEG495 test_16u::@7 + //SEG496 [244] call print_str + //SEG497 [79] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] + //SEG498 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG494 test_16u::@8 - //SEG495 [243] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG499 test_16u::@8 + //SEG500 [245] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG496 [244] call print_word - //SEG497 [59] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] - //SEG498 [59] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy - //SEG499 [59] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy + //SEG501 [246] call print_word + //SEG502 [65] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] + //SEG503 [65] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#130 [phi:test_16u::@8->print_word#0] -- register_copy + //SEG504 [65] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy jsr print_word - //SEG500 [245] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] - //SEG501 test_16u::@9 - //SEG502 [246] call print_ln - //SEG503 [45] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] - //SEG504 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy + //SEG505 [247] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] + //SEG506 test_16u::@9 + //SEG507 [248] call print_ln + //SEG508 [45] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] + //SEG509 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy jsr print_ln - //SEG505 test_16u::@10 - //SEG506 [247] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 + //SEG510 test_16u::@10 + //SEG511 [249] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG507 [248] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG512 [250] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1 - //SEG508 test_16u::@return - //SEG509 [249] return + //SEG513 test_16u::@return + //SEG514 [251] return rts dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG510 div16u +//SEG515 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -10791,194 +10853,194 @@ div16u: { .label return = $10 .label dividend = 5 .label divisor = $e - //SEG511 [250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + //SEG516 [252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG512 [251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - //SEG513 [252] call divr16u - //SEG514 [114] phi from div16u to divr16u [phi:div16u->divr16u] - //SEG515 [114] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG516 [114] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG517 [253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + //SEG518 [254] call divr16u + //SEG519 [116] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG520 [116] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG521 [116] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy jsr divr16u - //SEG517 [253] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG518 div16u::@1 - //SEG519 [254] (word) div16u::return#0 ← (word) divr16u::return#2 - //SEG520 div16u::@return - //SEG521 [255] return + //SEG522 [255] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG523 div16u::@1 + //SEG524 [256] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG525 div16u::@return + //SEG526 [257] return rts } -//SEG522 test_8u +//SEG527 test_8u test_8u: { - .label dividend = 7 + .label dividend = 9 .label divisor = $21 .label res = $22 .label i = $19 - //SEG523 [257] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] - //SEG524 [257] phi (byte*) print_line_cursor#41 = (byte*) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG528 [259] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG529 [259] phi (byte*) print_line_cursor#41 = (byte*) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG525 [257] phi (byte*) print_char_cursor#138 = (byte*) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG530 [259] phi (byte*) print_char_cursor#141 = (byte*) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG526 [257] phi (byte) test_8u::i#10 = (byte) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG531 [259] phi (byte) test_8u::i#10 = (byte) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i - //SEG527 test_8u::@1 + //SEG532 test_8u::@1 b1: - //SEG528 [258] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG533 [260] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG529 [259] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG534 [261] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 lda divisors,y sta divisor - //SEG530 [260] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 + //SEG535 [262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 lda dividend - //SEG531 [261] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 + //SEG536 [263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 ldx divisor - //SEG532 [262] call div8u - //SEG533 [196] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] - //SEG534 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG535 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG537 [264] call div8u + //SEG538 [198] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG539 [198] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG540 [198] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG536 [263] (byte) div8u::return#3 ← (byte) div8u::return#0 - //SEG537 test_8u::@2 - //SEG538 [264] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa + //SEG541 [265] (byte) div8u::return#3 ← (byte) div8u::return#0 + //SEG542 test_8u::@2 + //SEG543 [266] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa sta res - //SEG539 [265] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - //SEG540 [266] call print_byte - //SEG541 [65] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] - //SEG542 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy - //SEG543 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy + //SEG544 [267] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + //SEG545 [268] call print_byte + //SEG546 [71] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] + //SEG547 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#141 [phi:test_8u::@2->print_byte#0] -- register_copy + //SEG548 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy jsr print_byte - //SEG544 [267] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] - //SEG545 test_8u::@3 - //SEG546 [268] call print_str - //SEG547 [77] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] - //SEG548 [77] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG549 [269] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] + //SEG550 test_8u::@3 + //SEG551 [270] call print_str + //SEG552 [79] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] + //SEG553 [79] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG549 test_8u::@4 - //SEG550 [269] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG554 test_8u::@4 + //SEG555 [271] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG551 [270] call print_byte - //SEG552 [65] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] - //SEG553 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy - //SEG554 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy + //SEG556 [272] call print_byte + //SEG557 [71] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] + //SEG558 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@4->print_byte#0] -- register_copy + //SEG559 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy jsr print_byte - //SEG555 [271] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] - //SEG556 test_8u::@5 - //SEG557 [272] call print_str - //SEG558 [77] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] - //SEG559 [77] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG560 [273] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] + //SEG561 test_8u::@5 + //SEG562 [274] call print_str + //SEG563 [79] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] + //SEG564 [79] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG560 test_8u::@6 - //SEG561 [273] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG565 test_8u::@6 + //SEG566 [275] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG562 [274] call print_byte - //SEG563 [65] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] - //SEG564 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy - //SEG565 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy + //SEG567 [276] call print_byte + //SEG568 [71] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] + //SEG569 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@6->print_byte#0] -- register_copy + //SEG570 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy jsr print_byte - //SEG566 [275] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] - //SEG567 test_8u::@7 - //SEG568 [276] call print_str - //SEG569 [77] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] - //SEG570 [77] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG571 [277] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] + //SEG572 test_8u::@7 + //SEG573 [278] call print_str + //SEG574 [79] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] + //SEG575 [79] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG571 test_8u::@8 - //SEG572 [277] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx + //SEG576 test_8u::@8 + //SEG577 [279] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx stx print_byte.b - //SEG573 [278] call print_byte - //SEG574 [65] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] - //SEG575 [65] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy - //SEG576 [65] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy + //SEG578 [280] call print_byte + //SEG579 [71] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] + //SEG580 [71] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#130 [phi:test_8u::@8->print_byte#0] -- register_copy + //SEG581 [71] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy jsr print_byte - //SEG577 [279] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] - //SEG578 test_8u::@9 - //SEG579 [280] call print_ln - //SEG580 [45] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] - //SEG581 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy + //SEG582 [281] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] + //SEG583 test_8u::@9 + //SEG584 [282] call print_ln + //SEG585 [45] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] + //SEG586 [45] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy jsr print_ln - //SEG582 test_8u::@10 - //SEG583 [281] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG587 test_8u::@10 + //SEG588 [283] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG584 [282] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG589 [284] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b11 - //SEG585 test_8u::@return - //SEG586 [283] return + //SEG590 test_8u::@return + //SEG591 [285] return rts - //SEG587 test_8u::@11 + //SEG592 test_8u::@11 b11: - //SEG588 [284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG593 [286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG589 [257] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] - //SEG590 [257] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy - //SEG591 [257] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy - //SEG592 [257] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy + //SEG594 [259] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] + //SEG595 [259] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy + //SEG596 [259] phi (byte*) print_char_cursor#141 = (byte*~) print_char_cursor#190 [phi:test_8u::@11->test_8u::@1#1] -- register_copy + //SEG597 [259] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy jmp b1 dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG593 print_cls +//SEG598 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $1a - //SEG594 [286] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG595 [286] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG599 [288] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG600 [288] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG596 [286] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG597 [286] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG598 print_cls::@1 + //SEG601 [288] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG602 [288] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG603 print_cls::@1 b1: - //SEG599 [287] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG604 [289] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG600 [288] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG605 [290] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG601 [289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG606 [291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG602 print_cls::@return - //SEG603 [290] return + //SEG607 print_cls::@return + //SEG608 [292] return rts } -//SEG604 File Data +//SEG609 File Data print_hextab: .text "0123456789abcdef" str: .text " / @" str1: .text " = @" diff --git a/src/test/ref/test-division.sym b/src/test/ref/test-division.sym index 298e8621e..efd370d22 100644 --- a/src/test/ref/test-division.sym +++ b/src/test/ref/test-division.sym @@ -194,35 +194,34 @@ (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp ZP_BYTE:7 4.0 -(byte) print_byte::b#1 b zp ZP_BYTE:7 4.0 -(byte) print_byte::b#2 b zp ZP_BYTE:7 4.0 -(byte) print_byte::b#3 b zp ZP_BYTE:7 22.0 -(byte) print_byte::b#4 b zp ZP_BYTE:7 22.0 -(byte) print_byte::b#5 b zp ZP_BYTE:7 22.0 -(byte) print_byte::b#6 b zp ZP_BYTE:7 22.0 -(byte) print_byte::b#7 b zp ZP_BYTE:7 13.5 +(byte) print_byte::b#0 b zp ZP_BYTE:9 4.0 +(byte) print_byte::b#1 b zp ZP_BYTE:9 4.0 +(byte) print_byte::b#2 b zp ZP_BYTE:9 4.0 +(byte) print_byte::b#3 b zp ZP_BYTE:9 22.0 +(byte) print_byte::b#4 b zp ZP_BYTE:9 22.0 +(byte) print_byte::b#5 b zp ZP_BYTE:9 22.0 +(byte) print_byte::b#6 b zp ZP_BYTE:9 22.0 +(byte) print_byte::b#7 b zp ZP_BYTE:9 13.5 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#3 reg byte a 4.0 (byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#6 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:8 101.0 -(byte*) print_char_cursor#128 print_char_cursor zp ZP_WORD:8 15.607142857142856 -(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:8 3.0 -(byte*) print_char_cursor#131 print_char_cursor zp ZP_WORD:8 15.999999999999998 -(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:8 12.0 -(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:8 24.0 -(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:8 17.333333333333332 -(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:8 2.4444444444444446 -(byte*~) print_char_cursor#161 print_char_cursor zp ZP_WORD:8 22.0 -(byte*~) print_char_cursor#167 print_char_cursor zp ZP_WORD:8 22.0 -(byte*~) print_char_cursor#172 print_char_cursor zp ZP_WORD:8 22.0 -(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:8 1.9152542372881352 -(byte*~) print_char_cursor#188 print_char_cursor zp ZP_WORD:8 22.0 -(byte*) print_char_cursor#82 print_char_cursor zp ZP_WORD:8 7.0 +(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:7 101.0 +(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:7 15.607142857142856 +(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:7 12.0 +(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:7 12.0 +(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:7 24.0 +(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:7 17.333333333333332 +(byte*) print_char_cursor#141 print_char_cursor zp ZP_WORD:7 2.4444444444444446 +(byte*~) print_char_cursor#164 print_char_cursor zp ZP_WORD:7 22.0 +(byte*~) print_char_cursor#168 print_char_cursor zp ZP_WORD:7 22.0 +(byte*~) print_char_cursor#173 print_char_cursor zp ZP_WORD:7 22.0 +(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:7 1.8225806451612903 +(byte*~) print_char_cursor#190 print_char_cursor zp ZP_WORD:7 22.0 +(byte*) print_char_cursor#84 print_char_cursor zp ZP_WORD:7 8.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -246,13 +245,13 @@ (label) print_sbyte::@4 (label) print_sbyte::@return (signed byte) print_sbyte::b -(signed byte) print_sbyte::b#0 b zp ZP_BYTE:7 4.0 -(signed byte) print_sbyte::b#1 b zp ZP_BYTE:7 11.0 -(signed byte) print_sbyte::b#10 b zp ZP_BYTE:7 8.333333333333332 -(signed byte) print_sbyte::b#2 b zp ZP_BYTE:7 22.0 -(signed byte) print_sbyte::b#3 b zp ZP_BYTE:7 22.0 -(signed byte) print_sbyte::b#4 b zp ZP_BYTE:7 22.0 -(signed byte) print_sbyte::b#7 b zp ZP_BYTE:7 4.0 +(signed byte) print_sbyte::b#0 b zp ZP_BYTE:9 4.0 +(signed byte) print_sbyte::b#1 b zp ZP_BYTE:9 11.0 +(signed byte) print_sbyte::b#10 b zp ZP_BYTE:9 8.333333333333332 +(signed byte) print_sbyte::b#2 b zp ZP_BYTE:9 22.0 +(signed byte) print_sbyte::b#3 b zp ZP_BYTE:9 22.0 +(signed byte) print_sbyte::b#4 b zp ZP_BYTE:9 22.0 +(signed byte) print_sbyte::b#7 b zp ZP_BYTE:9 4.0 (byte*) print_screen (void()) print_str((byte*) print_str::str) (label) print_str::@1 @@ -266,15 +265,16 @@ (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:5 4.0 (signed word) print_sword::w#1 w zp ZP_WORD:5 11.0 +(signed word) print_sword::w#10 w zp ZP_WORD:5 8.333333333333332 (signed word) print_sword::w#2 w zp ZP_WORD:5 22.0 (signed word) print_sword::w#3 w zp ZP_WORD:5 22.0 (signed word) print_sword::w#4 w zp ZP_WORD:5 22.0 -(signed word) print_sword::w#5 w zp ZP_WORD:5 12.5 -(signed word) print_sword::w#6 w zp ZP_WORD:5 4.0 +(signed word) print_sword::w#7 w zp ZP_WORD:5 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -365,7 +365,7 @@ (label) test_8s::@9 (label) test_8s::@return (signed byte) test_8s::dividend -(signed byte) test_8s::dividend#0 dividend zp ZP_BYTE:7 4.714285714285714 +(signed byte) test_8s::dividend#0 dividend zp ZP_BYTE:9 4.714285714285714 (signed byte[]) test_8s::dividends (const signed byte[]) test_8s::dividends#0 dividends = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f } (signed byte) test_8s::divisor @@ -391,7 +391,7 @@ (label) test_8u::@9 (label) test_8u::@return (byte) test_8u::dividend -(byte) test_8u::dividend#0 dividend zp ZP_BYTE:7 4.714285714285714 +(byte) test_8u::dividend#0 dividend zp ZP_BYTE:9 4.714285714285714 (byte[]) test_8u::dividends (const byte[]) test_8u::dividends#0 dividends = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff } (byte) test_8u::divisor @@ -406,10 +406,10 @@ zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] -zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 ] -zp ZP_BYTE:7 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ] -reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -zp ZP_WORD:8 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ] +zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 ] +reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +zp ZP_WORD:7 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ] +zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ] zp ZP_WORD:10 [ print_str::str#13 print_str::str#15 print_str::str#0 ] zp ZP_WORD:12 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::dividendu#1 ] zp ZP_WORD:14 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::divisoru#1 test_16u::divisor#0 div16u::divisor#0 ] diff --git a/src/test/ref/test-multiply-16bit.asm b/src/test/ref/test-multiply-16bit.asm index 36b22b524..39ab4338c 100644 --- a/src/test/ref/test-multiply-16bit.asm +++ b/src/test/ref/test-multiply-16bit.asm @@ -319,7 +319,13 @@ print_char: { print_sword: { .label w = 3 lda w+1 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_word + rts + b1: lda #'-' jsr print_char sec @@ -329,9 +335,7 @@ print_sword: { lda #0 sbc w+1 sta w+1 - b1: - jsr print_word - rts + jmp b2 } // Fast multiply two signed words to a signed double word result // Fixes offsets introduced by using unsigned multiplication diff --git a/src/test/ref/test-multiply-16bit.cfg b/src/test/ref/test-multiply-16bit.cfg index 2c2cdec2d..496b54db4 100644 --- a/src/test/ref/test-multiply-16bit.cfg +++ b/src/test/ref/test-multiply-16bit.cfg @@ -27,13 +27,13 @@ main::@return: scope:[main] from main::@3 [12] return to:@return mul16s_compare: scope:[mul16s_compare] from main::@3 - [13] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 + [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 to:mul16s_compare::@1 mul16s_compare::@1: scope:[mul16s_compare] from mul16s_compare mul16s_compare::@8 [14] (byte) mul16s_compare::i#12 ← phi( mul16s_compare/(byte) 0 mul16s_compare::@8/(byte) mul16s_compare::i#1 ) [14] (signed word) mul16s_compare::b#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::b#1 ) [14] (signed word) mul16s_compare::a#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::a#1 ) - [14] (byte*) print_char_cursor#143 ← phi( mul16s_compare/(byte*~) print_char_cursor#218 mul16s_compare::@8/(byte*) print_char_cursor#128 ) + [14] (byte*) print_char_cursor#146 ← phi( mul16s_compare/(byte*~) print_char_cursor#220 mul16s_compare::@8/(byte*) print_char_cursor#130 ) [15] call print_str to:mul16s_compare::@2 mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@1 mul16s_compare::@5 @@ -104,7 +104,7 @@ mul16s_compare::@9: scope:[mul16s_compare] from mul16s_compare::@8 [54] call print_ln to:mul16s_compare::@13 mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@9 - [55] (byte*~) print_char_cursor#177 ← (byte*) print_line_cursor#1 + [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 [56] call print_str to:mul16s_compare::@14 mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 @@ -112,23 +112,23 @@ mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 [58] call print_ln to:mul16s_compare::@return print_ln: scope:[print_ln] from mul16s_compare::@14 mul16s_compare::@9 mul16s_error::@10 mul16u_compare::@14 mul16u_compare::@9 mul16u_error::@10 - [59] (byte*) print_char_cursor#129 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#128 mul16s_compare::@14/(byte*) print_char_cursor#128 mul16s_error::@10/(byte*) print_char_cursor#20 mul16u_compare::@9/(byte*) print_char_cursor#128 mul16u_compare::@14/(byte*) print_char_cursor#128 mul16u_error::@10/(byte*) print_char_cursor#20 ) + [59] (byte*) print_char_cursor#131 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#130 mul16s_compare::@14/(byte*) print_char_cursor#130 mul16s_error::@10/(byte*) print_char_cursor#21 mul16u_compare::@9/(byte*) print_char_cursor#130 mul16u_compare::@14/(byte*) print_char_cursor#130 mul16u_error::@10/(byte*) print_char_cursor#21 ) [59] (byte*) print_line_cursor#43 ← phi( mul16s_compare::@9/(byte*) print_line_cursor#1 mul16s_compare::@14/(byte*) print_line_cursor#1 mul16s_error::@10/(byte*) print_line_cursor#1 mul16u_compare::@9/(byte*) 1024 mul16u_compare::@14/(byte*) print_line_cursor#1 mul16u_error::@10/(byte*) 1024 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [60] (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 ) [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 - [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 + [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [63] return to:@return print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@13 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@13 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8 - [64] (byte*) print_char_cursor#148 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#143 mul16s_compare::@13/(byte*~) print_char_cursor#177 mul16s_error/(byte*) print_char_cursor#128 mul16s_error::@2/(byte*) print_char_cursor#20 mul16s_error::@4/(byte*) print_char_cursor#20 mul16s_error::@6/(byte*) print_char_cursor#20 mul16s_error::@8/(byte*) print_char_cursor#20 mul16u_compare::@1/(byte*) print_char_cursor#139 mul16u_compare::@13/(byte*~) print_char_cursor#184 mul16u_error/(byte*) print_char_cursor#128 mul16u_error::@2/(byte*) print_char_cursor#20 mul16u_error::@4/(byte*) print_char_cursor#20 mul16u_error::@6/(byte*) print_char_cursor#20 mul16u_error::@8/(byte*) print_char_cursor#20 ) + [64] (byte*) print_char_cursor#151 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#146 mul16s_compare::@13/(byte*~) print_char_cursor#180 mul16s_error/(byte*) print_char_cursor#130 mul16s_error::@2/(byte*) print_char_cursor#21 mul16s_error::@4/(byte*) print_char_cursor#21 mul16s_error::@6/(byte*) print_char_cursor#21 mul16s_error::@8/(byte*) print_char_cursor#21 mul16u_compare::@1/(byte*) print_char_cursor#142 mul16u_compare::@13/(byte*~) print_char_cursor#187 mul16u_error/(byte*) print_char_cursor#130 mul16u_error::@2/(byte*) print_char_cursor#21 mul16u_error::@4/(byte*) print_char_cursor#21 mul16u_error::@6/(byte*) print_char_cursor#21 mul16u_error::@8/(byte*) print_char_cursor#21 ) [64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) str mul16s_compare::@13/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) str1 mul16s_error::@4/(const string) str2 mul16s_error::@6/(const string) str3 mul16s_error::@8/(const string) str4 mul16u_compare::@1/(const string) str mul16u_compare::@13/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) str1 mul16u_error::@4/(const string) str2 mul16u_error::@6/(const string) str3 mul16u_error::@8/(const string) str4 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [65] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#148 print_str::@2/(byte*) print_char_cursor#1 ) + [65] (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#151 print_str::@2/(byte*) print_char_cursor#1 ) [65] (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 ) [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -136,8 +136,8 @@ print_str::@return: scope:[print_str] from print_str::@1 [67] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) - [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 + [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) + [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 to:print_str::@1 mul16s_error: scope:[mul16s_error] from mul16s_compare::@7 @@ -199,7 +199,7 @@ print_sdword::@3: scope:[print_sdword] from print_sdword::@2 [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 to:print_sdword::@1 print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@3 - [99] (byte*) print_char_cursor#134 ← phi( print_sdword/(byte*) print_char_cursor#128 print_sdword::@3/(byte*) print_char_cursor#20 ) + [99] (byte*) print_char_cursor#137 ← phi( print_sdword/(byte*) print_char_cursor#130 print_sdword::@3/(byte*) print_char_cursor#21 ) [99] (signed dword) print_sdword::dw#5 ← phi( print_sdword/(signed dword) print_sdword::dw#4 print_sdword::@3/(signed dword) print_sdword::dw#0 ) [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [101] call print_dword @@ -208,7 +208,7 @@ print_sdword::@return: scope:[print_sdword] from print_sdword::@1 [102] return to:@return print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@1 - [103] (byte*) print_char_cursor#133 ← phi( mul16u_error::@5/(byte*) print_char_cursor#128 mul16u_error::@7/(byte*) print_char_cursor#128 mul16u_error::@9/(byte*) print_char_cursor#128 print_sdword::@1/(byte*) print_char_cursor#134 ) + [103] (byte*) print_char_cursor#136 ← phi( mul16u_error::@5/(byte*) print_char_cursor#130 mul16u_error::@7/(byte*) print_char_cursor#130 mul16u_error::@9/(byte*) print_char_cursor#130 print_sdword::@1/(byte*) print_char_cursor#137 ) [103] (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@1/(dword) print_dword::dw#0 ) [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [105] call print_word @@ -220,9 +220,9 @@ print_dword::@1: scope:[print_dword] from print_dword print_dword::@return: scope:[print_dword] from print_dword::@1 [108] return to:@return -print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@1 - [109] (byte*) print_char_cursor#132 ← phi( mul16u_error::@1/(byte*) print_char_cursor#128 mul16u_error::@3/(byte*) print_char_cursor#128 print_dword/(byte*) print_char_cursor#133 print_dword::@1/(byte*) print_char_cursor#20 print_sword::@1/(byte*) print_char_cursor#130 ) - [109] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2 + [109] (byte*) print_char_cursor#135 ← phi( mul16u_error::@1/(byte*) print_char_cursor#130 mul16u_error::@3/(byte*) print_char_cursor#130 print_dword/(byte*) print_char_cursor#136 print_dword::@1/(byte*) print_char_cursor#21 print_sword::@2/(byte*) print_char_cursor#21 ) + [109] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [111] call print_byte to:print_word::@1 @@ -234,385 +234,388 @@ print_word::@return: scope:[print_word] from print_word::@1 [114] return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - [115] (byte*) print_char_cursor#136 ← phi( print_word/(byte*) print_char_cursor#132 print_word::@1/(byte*) print_char_cursor#20 ) + [115] (byte*) print_char_cursor#139 ← phi( print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#21 ) [115] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [118] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [121] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 [122] return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@2 - [123] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#20 print_sdword::@2/(byte*) print_char_cursor#128 print_sword::@2/(byte*) print_char_cursor#128 ) - [123] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sdword::@2/(byte) '-' print_sword::@2/(byte) '-' ) - [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 - [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@1 print_sword::@3 + [123] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#21 print_sdword::@2/(byte*) print_char_cursor#130 print_sword::@1/(byte*) print_char_cursor#130 print_sword::@3/(byte*) print_char_cursor#130 ) + [123] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 + [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 to:print_char::@return print_char::@return: scope:[print_char] from print_char [126] return to:@return print_sword: scope:[print_sword] from mul16s_error::@1 mul16s_error::@3 [127] (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 ) - [128] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [129] phi() [130] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [132] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#128 print_sword::@3/(byte*) print_char_cursor#20 ) - [132] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 ) - [133] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - [134] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [131] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) + [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + [133] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [135] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [134] return to:@return +print_sword::@1: scope:[print_sword] from print_sword + [135] phi() + [136] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 + to:print_sword::@2 mulf16s: scope:[mulf16s] from mul16s_compare::@11 - [136] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 - [137] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 - [138] call mulf16u - [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 + [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 + [140] call mulf16u + [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 to:mulf16s::@5 mulf16s::@5: scope:[mulf16s] from mulf16s - [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - [141] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 + [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@5 - [142] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 - [143] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 - [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 + [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 + [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 + [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5 - [145] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) - [146] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 + [147] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) + [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [147] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 - [148] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 - [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 + [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 + [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 + [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [150] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [151] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + [152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [152] return + [154] return to:@return mulf16u: scope:[mulf16u] from mul16u_compare::@11 mulf16s - [153] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 ) - [153] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 ) - [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 - [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 + [155] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 ) + [155] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 ) + [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 + [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) + [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [158] return + [160] return to:@return mul16s: scope:[mul16s] from mul16s_compare::@10 - [159] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 - [160] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 - [161] call mul16u - [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 + [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 + [163] call mul16u + [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@5 mul16s::@5: scope:[mul16s] from mul16s - [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [164] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 + [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@5 - [165] (word~) mul16s::$9 ← > (dword) mul16s::m#0 - [166] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 - [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 + [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 + [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5 - [168] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 ) - [169] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 + [170] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 ) + [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 - [170] (word~) mul16s::$13 ← > (dword) mul16s::m#5 - [171] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 - [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 + [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 + [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 + [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - [173] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) - [174] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + [175] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) + [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [175] return + [177] return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@10 - [176] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 ) - [176] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 ) + [178] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 ) + [178] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [177] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [177] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [177] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [178] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 + [179] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [179] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [179] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [179] return + [181] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [180] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 - [181] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 + [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [182] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [183] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 - [185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [185] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 + [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 muls16s: scope:[muls16s] from mul16s_compare::@2 - [186] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 + [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 to:muls16s::@2 muls16s::@2: scope:[muls16s] from muls16s - [187] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 + [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 to:muls16s::@3 muls16s::@3: scope:[muls16s] from muls16s::@2 muls16s::@3 - [188] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 ) - [188] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) - [189] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 - [190] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 - [191] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 + [190] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 ) + [190] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) + [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 + [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 + [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 to:muls16s::@1 muls16s::@1: scope:[muls16s] from muls16s::@2 muls16s::@3 muls16s::@4 - [192] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) + [194] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) to:muls16s::@return muls16s::@return: scope:[muls16s] from muls16s::@1 - [193] return + [195] return to:@return muls16s::@4: scope:[muls16s] from muls16s muls16s::@4 - [194] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 ) - [194] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 ) - [195] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 - [196] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 - [197] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 + [196] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 ) + [196] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 ) + [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 + [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 + [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 to:muls16s::@1 mul16u_compare: scope:[mul16u_compare] from main::@2 - [198] phi() + [200] phi() to:mul16u_compare::@1 mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@8 - [199] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 ) - [199] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 ) - [199] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 ) - [199] (byte*) print_char_cursor#139 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#128 ) - [200] call print_str + [201] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 ) + [201] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 ) + [201] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 ) + [201] (byte*) print_char_cursor#142 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#130 ) + [202] call print_str to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5 - [201] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) - [201] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) - [201] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) - [202] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b - [203] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd - [204] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - [205] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - [206] call muls16u - [207] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + [203] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) + [203] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) + [203] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) + [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b + [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd + [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + [208] call muls16u + [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 to:mul16u_compare::@10 mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@2 - [208] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - [209] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 - [210] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - [211] call mul16u - [212] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 + [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + [213] call mul16u + [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - [213] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - [214] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - [215] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - [216] call mulf16u - [217] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + [218] call mulf16u + [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 to:mul16u_compare::@12 mul16u_compare::@12: scope:[mul16u_compare] from mul16u_compare::@11 - [218] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - [219] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 + [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 to:mul16u_compare::@6 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@12 - [220] phi() + [222] phi() to:mul16u_compare::@3 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_compare::@6 - [221] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 ) - [222] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 + [223] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 ) + [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 to:mul16u_compare::@4 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@3 - [223] phi() + [225] phi() to:mul16u_compare::@4 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@3 - [224] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 ) - [225] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 + [226] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 ) + [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 to:mul16u_compare::@7 mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@4 - [226] *((const byte*) BGCOL#0) ← (byte) 2 - [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 - [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - [232] call mul16u_error + [228] *((const byte*) BGCOL#0) ← (byte) 2 + [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 + [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + [234] call mul16u_error to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@14 mul16u_compare::@7 - [233] return + [235] return to:@return mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 - [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 - [235] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 + [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 + [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 to:mul16u_compare::@8 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@5 - [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 - [237] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 + [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 + [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 to:mul16u_compare::@9 mul16u_compare::@9: scope:[mul16u_compare] from mul16u_compare::@8 - [238] phi() - [239] call print_ln + [240] phi() + [241] call print_ln to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@9 - [240] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 - [241] call print_str + [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 + [243] call print_str to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 - [242] phi() - [243] call print_ln + [244] phi() + [245] call print_ln to:mul16u_compare::@return mul16u_error: scope:[mul16u_error] from mul16u_compare::@7 - [244] phi() - [245] call print_str + [246] phi() + [247] call print_str to:mul16u_error::@1 mul16u_error::@1: scope:[mul16u_error] from mul16u_error - [246] (word) print_word::w#3 ← (word) mul16u_error::a#0 - [247] call print_word + [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 + [249] call print_word to:mul16u_error::@2 mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 - [248] phi() - [249] call print_str + [250] phi() + [251] call print_str to:mul16u_error::@3 mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 - [250] (word) print_word::w#4 ← (word) mul16u_error::b#0 - [251] call print_word + [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 + [253] call print_word to:mul16u_error::@4 mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 - [252] phi() - [253] call print_str + [254] phi() + [255] call print_str to:mul16u_error::@5 mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 - [254] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - [255] call print_dword + [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + [257] call print_dword to:mul16u_error::@6 mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 - [256] phi() - [257] call print_str + [258] phi() + [259] call print_str to:mul16u_error::@7 mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 - [258] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 - [259] call print_dword + [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + [261] call print_dword to:mul16u_error::@8 mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 - [260] phi() - [261] call print_str + [262] phi() + [263] call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 - [262] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 - [263] call print_dword + [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 + [265] call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 - [264] phi() - [265] call print_ln + [266] phi() + [267] call print_ln to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10 - [266] return + [268] return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 - [267] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 + [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 to:muls16u::@2 muls16u::@2: scope:[muls16u] from muls16u muls16u::@2 - [268] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 ) - [268] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) - [269] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 - [270] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 - [271] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 + [270] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 ) + [270] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) + [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 + [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 + [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 to:muls16u::@1 muls16u::@1: scope:[muls16u] from muls16u muls16u::@2 - [272] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) + [274] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) to:muls16u::@return muls16u::@return: scope:[muls16u] from muls16u::@1 - [273] return + [275] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [274] phi() + [276] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [275] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [275] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [275] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [275] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [275] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [276] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [277] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 - [278] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 + [277] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [277] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [277] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [277] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [277] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 + [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@1 - [279] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [280] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@3 - [281] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) - [281] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) - [282] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 - [283] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 - [284] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 - [285] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 - [286] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [287] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [288] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [289] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 + [283] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) + [283] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) + [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 + [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 + [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 + [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 + [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@2 mulf_init::@5 - [290] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) - [290] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) - [290] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) - [290] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) - [291] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [292] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [293] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [294] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [295] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 + [292] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) + [292] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) + [292] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) + [292] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) + [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 to:mulf_init::@5 mulf_init::@7: scope:[mulf_init] from mulf_init::@4 - [296] phi() + [298] phi() to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@4 mulf_init::@7 - [297] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) - [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 + [299] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) + [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 to:mulf_init::@6 mulf_init::@6: scope:[mulf_init] from mulf_init::@5 - [300] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) - [301] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) + [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) + [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@6 - [302] return + [304] return to:@return print_cls: scope:[print_cls] from main - [303] phi() + [305] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [304] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [305] *((byte*) print_cls::sc#2) ← (byte) ' ' - [306] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [307] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [306] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [307] *((byte*) print_cls::sc#2) ← (byte) ' ' + [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [308] return + [310] return to:@return diff --git a/src/test/ref/test-multiply-16bit.log b/src/test/ref/test-multiply-16bit.log index 8a71cd238..290fe8ef0 100644 --- a/src/test/ref/test-multiply-16bit.log +++ b/src/test/ref/test-multiply-16bit.log @@ -19,6 +19,7 @@ Culled Empty Block (label) print_str::@6 Culled Empty Block (label) @3 Culled Empty Block (label) @4 Culled Empty Block (label) @5 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @6 Culled Empty Block (label) @7 Culled Empty Block (label) @8 @@ -74,37 +75,37 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@12 print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@17 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@17 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8 - (byte*) print_char_cursor#148 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#143 mul16s_compare::@17/(byte*) print_char_cursor#49 mul16s_error/(byte*) print_char_cursor#146 mul16s_error::@2/(byte*) print_char_cursor#53 mul16s_error::@4/(byte*) print_char_cursor#55 mul16s_error::@6/(byte*) print_char_cursor#57 mul16s_error::@8/(byte*) print_char_cursor#59 mul16u_compare::@1/(byte*) print_char_cursor#139 mul16u_compare::@17/(byte*) print_char_cursor#31 mul16u_error/(byte*) print_char_cursor#142 mul16u_error::@2/(byte*) print_char_cursor#35 mul16u_error::@4/(byte*) print_char_cursor#37 mul16u_error::@6/(byte*) print_char_cursor#39 mul16u_error::@8/(byte*) print_char_cursor#41 ) + (byte*) print_char_cursor#151 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#146 mul16s_compare::@17/(byte*) print_char_cursor#50 mul16s_error/(byte*) print_char_cursor#149 mul16s_error::@2/(byte*) print_char_cursor#54 mul16s_error::@4/(byte*) print_char_cursor#56 mul16s_error::@6/(byte*) print_char_cursor#58 mul16s_error::@8/(byte*) print_char_cursor#60 mul16u_compare::@1/(byte*) print_char_cursor#142 mul16u_compare::@17/(byte*) print_char_cursor#32 mul16u_error/(byte*) print_char_cursor#145 mul16u_error::@2/(byte*) print_char_cursor#36 mul16u_error::@4/(byte*) print_char_cursor#38 mul16u_error::@6/(byte*) print_char_cursor#40 mul16u_error::@8/(byte*) print_char_cursor#42 ) (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(byte*) print_str::str#8 mul16s_compare::@17/(byte*) print_str::str#9 mul16s_error/(byte*) print_str::str#10 mul16s_error::@2/(byte*) print_str::str#11 mul16s_error::@4/(byte*) print_str::str#12 mul16s_error::@6/(byte*) print_str::str#13 mul16s_error::@8/(byte*) print_str::str#14 mul16u_compare::@1/(byte*) print_str::str#1 mul16u_compare::@17/(byte*) print_str::str#2 mul16u_error/(byte*) print_str::str#3 mul16u_error::@2/(byte*) print_str::str#4 mul16u_error::@4/(byte*) print_str::str#5 mul16u_error::@6/(byte*) print_str::str#6 mul16u_error::@8/(byte*) print_str::str#7 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#148 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#151 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#15) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#65 ← phi( print_str::@1/(byte*) print_char_cursor#128 ) + (byte*) print_char_cursor#66 ← phi( print_str::@1/(byte*) print_char_cursor#130 ) (byte*) print_str::str#16 ← phi( print_str::@1/(byte*) print_str::str#15 ) - *((byte*) print_char_cursor#65) ← *((byte*) print_str::str#16) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#65 + *((byte*) print_char_cursor#66) ← *((byte*) print_str::str#16) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#66 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#66 ← phi( print_str::@1/(byte*) print_char_cursor#128 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#66 + (byte*) print_char_cursor#67 ← phi( print_str::@1/(byte*) print_char_cursor#130 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#67 return to:@return print_ln: scope:[print_ln] from mul16s_compare::@11 mul16s_compare::@18 mul16s_error::@10 mul16u_compare::@11 mul16u_compare::@18 mul16u_error::@10 - (byte*) print_char_cursor#129 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#145 mul16s_compare::@18/(byte*) print_char_cursor#50 mul16s_error::@10/(byte*) print_char_cursor#61 mul16u_compare::@11/(byte*) print_char_cursor#141 mul16u_compare::@18/(byte*) print_char_cursor#32 mul16u_error::@10/(byte*) print_char_cursor#43 ) + (byte*) print_char_cursor#131 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#148 mul16s_compare::@18/(byte*) print_char_cursor#51 mul16s_error::@10/(byte*) print_char_cursor#62 mul16u_compare::@11/(byte*) print_char_cursor#144 mul16u_compare::@18/(byte*) print_char_cursor#33 mul16u_error::@10/(byte*) print_char_cursor#44 ) (byte*) print_line_cursor#43 ← phi( mul16s_compare::@11/(byte*) print_line_cursor#51 mul16s_compare::@18/(byte*) print_line_cursor#52 mul16s_error::@10/(byte*) print_line_cursor#53 mul16u_compare::@11/(byte*) print_line_cursor#47 mul16u_compare::@18/(byte*) print_line_cursor#48 mul16u_error::@10/(byte*) print_line_cursor#49 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#67 ← phi( print_ln/(byte*) print_char_cursor#129 print_ln::@1/(byte*) print_char_cursor#67 ) + (byte*) print_char_cursor#68 ← phi( print_ln/(byte*) print_char_cursor#131 print_ln::@1/(byte*) print_char_cursor#68 ) (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#22 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#67 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#68 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -112,74 +113,84 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#23 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#68 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) + (byte*) print_char_cursor#69 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) (byte*) print_line_cursor#24 ← phi( print_ln::@2/(byte*) print_line_cursor#23 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#24 - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#68 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#69 return to:@return print_sword: scope:[print_sword] from mul16s_error::@1 mul16s_error::@3 - (byte*) print_char_cursor#149 ← phi( mul16s_error::@1/(byte*) print_char_cursor#52 mul16s_error::@3/(byte*) print_char_cursor#54 ) + (byte*) print_char_cursor#152 ← phi( mul16s_error::@1/(byte*) print_char_cursor#53 mul16s_error::@3/(byte*) print_char_cursor#55 ) (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#149 print_sword::@4/(byte*) print_char_cursor#6 ) - (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#4 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#69 ← phi( print_sword::@1/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#69 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#3 ) - (byte*) print_char_cursor#131 ← phi( print_sword/(byte*) print_char_cursor#149 ) + (byte*) print_char_cursor#132 ← phi( print_sword/(byte*) print_char_cursor#152 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#5 ← phi( print_sword::@2/(signed word) print_sword::w#6 ) - (byte*) print_char_cursor#70 ← phi( print_sword::@2/(byte*) print_char_cursor#21 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#70 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#5 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#4 ← phi( print_sword::@1/(signed word) print_sword::w#6 ) + (byte*) print_char_cursor#70 ← phi( print_sword::@1/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#70 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#71 ← phi( print_sword::@3/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#71 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#3 ) + (byte*) print_char_cursor#133 ← phi( print_sword/(byte*) print_char_cursor#152 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#7 ← phi( print_sword::@3/(signed word) print_sword::w#8 ) + (byte*) print_char_cursor#71 ← phi( print_sword::@3/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#71 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#134 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) + (signed word) print_sword::w#5 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#7 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#5 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#72 ← phi( print_sword::@2/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#72 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#73 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#73 return to:@return -print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@1 - (byte*) print_char_cursor#132 ← phi( mul16u_error::@1/(byte*) print_char_cursor#34 mul16u_error::@3/(byte*) print_char_cursor#36 print_dword/(byte*) print_char_cursor#133 print_dword::@1/(byte*) print_char_cursor#11 print_sword::@1/(byte*) print_char_cursor#130 ) - (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2 + (byte*) print_char_cursor#135 ← phi( mul16u_error::@1/(byte*) print_char_cursor#35 mul16u_error::@3/(byte*) print_char_cursor#37 print_dword/(byte*) print_char_cursor#136 print_dword::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#134 ) + (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#5 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#6 ← phi( print_word/(word) print_word::w#5 ) - (byte*) print_char_cursor#72 ← phi( print_word/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#72 + (byte*) print_char_cursor#74 ← phi( print_word/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#74 (byte~) print_word::$2 ← < (word) print_word::w#6 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#73 ← phi( print_word::@1/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#73 + (byte*) print_char_cursor#75 ← phi( print_word::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#75 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#74 ← phi( print_word::@2/(byte*) print_char_cursor#9 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#74 + (byte*) print_char_cursor#76 ← phi( print_word::@2/(byte*) print_char_cursor#10 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#76 return to:@return print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@1 - (byte*) print_char_cursor#133 ← phi( mul16u_error::@5/(byte*) print_char_cursor#38 mul16u_error::@7/(byte*) print_char_cursor#40 mul16u_error::@9/(byte*) print_char_cursor#42 print_sdword::@1/(byte*) print_char_cursor#134 ) + (byte*) print_char_cursor#136 ← phi( mul16u_error::@5/(byte*) print_char_cursor#39 mul16u_error::@7/(byte*) print_char_cursor#41 mul16u_error::@9/(byte*) print_char_cursor#43 print_sdword::@1/(byte*) print_char_cursor#137 ) (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@1/(dword) print_dword::dw#0 ) (word~) print_dword::$0 ← > (dword) print_dword::dw#4 (word) print_word::w#1 ← (word~) print_dword::$0 @@ -187,96 +198,96 @@ print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_ to:print_dword::@1 print_dword::@1: scope:[print_dword] from print_dword (dword) print_dword::dw#5 ← phi( print_dword/(dword) print_dword::dw#4 ) - (byte*) print_char_cursor#75 ← phi( print_dword/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#75 + (byte*) print_char_cursor#77 ← phi( print_dword/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#77 (word~) print_dword::$2 ← < (dword) print_dword::dw#5 (word) print_word::w#2 ← (word~) print_dword::$2 call print_word to:print_dword::@2 print_dword::@2: scope:[print_dword] from print_dword::@1 - (byte*) print_char_cursor#76 ← phi( print_dword::@1/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#76 + (byte*) print_char_cursor#78 ← phi( print_dword::@1/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#78 to:print_dword::@return print_dword::@return: scope:[print_dword] from print_dword::@2 - (byte*) print_char_cursor#77 ← phi( print_dword::@2/(byte*) print_char_cursor#12 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#77 + (byte*) print_char_cursor#79 ← phi( print_dword::@2/(byte*) print_char_cursor#13 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#79 return to:@return print_sdword: scope:[print_sdword] from mul16s_error::@5 mul16s_error::@7 mul16s_error::@9 - (byte*) print_char_cursor#150 ← phi( mul16s_error::@5/(byte*) print_char_cursor#56 mul16s_error::@7/(byte*) print_char_cursor#58 mul16s_error::@9/(byte*) print_char_cursor#60 ) + (byte*) print_char_cursor#153 ← phi( mul16s_error::@5/(byte*) print_char_cursor#57 mul16s_error::@7/(byte*) print_char_cursor#59 mul16s_error::@9/(byte*) print_char_cursor#61 ) (signed dword) print_sdword::dw#4 ← phi( mul16s_error::@5/(signed dword) print_sdword::dw#1 mul16s_error::@7/(signed dword) print_sdword::dw#2 mul16s_error::@9/(signed dword) print_sdword::dw#3 ) (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#4 < (number) 0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 if((bool~) print_sdword::$1) goto print_sdword::@1 to:print_sdword::@2 print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@4 - (byte*) print_char_cursor#134 ← phi( print_sdword/(byte*) print_char_cursor#150 print_sdword::@4/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#137 ← phi( print_sdword/(byte*) print_char_cursor#153 print_sdword::@4/(byte*) print_char_cursor#16 ) (signed dword) print_sdword::dw#5 ← phi( print_sdword/(signed dword) print_sdword::dw#4 print_sdword::@4/(signed dword) print_sdword::dw#0 ) (dword~) print_sdword::$2 ← ((dword)) (signed dword) print_sdword::dw#5 (dword) print_dword::dw#0 ← (dword~) print_sdword::$2 call print_dword to:print_sdword::@3 print_sdword::@3: scope:[print_sdword] from print_sdword::@1 - (byte*) print_char_cursor#78 ← phi( print_sdword::@1/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#78 + (byte*) print_char_cursor#80 ← phi( print_sdword::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#80 to:print_sdword::@return print_sdword::@2: scope:[print_sdword] from print_sdword (signed dword) print_sdword::dw#7 ← phi( print_sdword/(signed dword) print_sdword::dw#4 ) - (byte*) print_char_cursor#135 ← phi( print_sdword/(byte*) print_char_cursor#150 ) - (byte) print_char::ch#1 ← (byte) '-' + (byte*) print_char_cursor#138 ← phi( print_sdword/(byte*) print_char_cursor#153 ) + (byte) print_char::ch#2 ← (byte) '-' call print_char to:print_sdword::@4 print_sdword::@4: scope:[print_sdword] from print_sdword::@2 (signed dword) print_sdword::dw#6 ← phi( print_sdword::@2/(signed dword) print_sdword::dw#7 ) - (byte*) print_char_cursor#79 ← phi( print_sdword::@2/(byte*) print_char_cursor#21 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#79 + (byte*) print_char_cursor#81 ← phi( print_sdword::@2/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#81 (signed dword~) print_sdword::$5 ← - (signed dword) print_sdword::dw#6 (signed dword) print_sdword::dw#0 ← (signed dword~) print_sdword::$5 to:print_sdword::@1 print_sdword::@return: scope:[print_sdword] from print_sdword::@3 - (byte*) print_char_cursor#80 ← phi( print_sdword::@3/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#80 + (byte*) print_char_cursor#82 ← phi( print_sdword::@3/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#82 return to:@return @12: scope:[] from @begin (byte*) print_screen#8 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#165 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#168 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#71 ← phi( @begin/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@24 print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) print_char_cursor#136 ← phi( print_word/(byte*) print_char_cursor#132 print_word::@1/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#139 ← phi( print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#9 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4 - (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char 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*) print_char_cursor#81 ← phi( print_byte/(byte*) print_char_cursor#21 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#81 + (byte*) print_char_cursor#83 ← phi( print_byte/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#83 (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f - (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#82 ← phi( print_byte::@1/(byte*) print_char_cursor#21 ) - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#82 + (byte*) print_char_cursor#84 ← phi( print_byte::@1/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#84 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#83 ← phi( print_byte::@2/(byte*) print_char_cursor#18 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#83 + (byte*) print_char_cursor#85 ← phi( print_byte::@2/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#85 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@2 - (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#17 print_sdword::@2/(byte*) print_char_cursor#135 print_sword::@2/(byte*) print_char_cursor#131 ) - (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sdword::@2/(byte) print_char::ch#1 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 - (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#18 print_sdword::@2/(byte*) print_char_cursor#138 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#133 ) + (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sdword::@2/(byte) print_char::ch#2 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 + (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#85 ← phi( print_char/(byte*) print_char_cursor#20 ) - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#85 + (byte*) print_char_cursor#87 ← phi( print_char/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#87 return to:@return print_cls: scope:[print_cls] from main @@ -295,13 +306,13 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#22 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#23 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#86 ← phi( print_cls::@2/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#88 ← phi( print_cls::@2/(byte*) print_char_cursor#23 ) (byte*) print_line_cursor#25 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#25 - (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#86 + (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#88 return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@13 @@ -410,7 +421,7 @@ mul16s::@return: scope:[mul16s] from mul16s::@2 to:@return @24: scope:[] from @12 (byte*) print_screen#7 ← phi( @12/(byte*) print_screen#8 ) - (byte*) print_char_cursor#158 ← phi( @12/(byte*) print_char_cursor#165 ) + (byte*) print_char_cursor#161 ← phi( @12/(byte*) print_char_cursor#168 ) (byte*) print_line_cursor#62 ← phi( @12/(byte*) print_line_cursor#71 ) (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } @@ -588,47 +599,47 @@ mulf16s::@return: scope:[mulf16s] from mulf16s::@2 to:@return @33: scope:[] from @24 (byte*) print_screen#6 ← phi( @24/(byte*) print_screen#7 ) - (byte*) print_char_cursor#157 ← phi( @24/(byte*) print_char_cursor#158 ) + (byte*) print_char_cursor#160 ← phi( @24/(byte*) print_char_cursor#161 ) (byte*) print_line_cursor#61 ← phi( @24/(byte*) print_line_cursor#62 ) (byte*) BGCOL#0 ← ((byte*)) (number) $d021 to:@40 main: scope:[main] from @40 - (byte*) print_char_cursor#137 ← phi( @40/(byte*) print_char_cursor#147 ) + (byte*) print_char_cursor#140 ← phi( @40/(byte*) print_char_cursor#150 ) (byte*) print_line_cursor#44 ← phi( @40/(byte*) print_line_cursor#54 ) (byte*) print_screen#4 ← phi( @40/(byte*) print_screen#5 ) *((byte*) BGCOL#0) ← (number) 5 call print_cls to:main::@1 main::@1: scope:[main] from main - (byte*) print_char_cursor#87 ← phi( main/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#89 ← phi( main/(byte*) print_char_cursor#24 ) (byte*) print_line_cursor#26 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#26 - (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#87 + (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#89 call mulf_init to:main::@2 main::@2: scope:[main] from main::@1 (byte*) print_line_cursor#45 ← phi( main::@1/(byte*) print_line_cursor#5 ) - (byte*) print_char_cursor#138 ← phi( main::@1/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#141 ← phi( main::@1/(byte*) print_char_cursor#25 ) call mul16u_compare to:main::@3 main::@3: scope:[main] from main::@2 (byte*) print_line_cursor#27 ← phi( main::@2/(byte*) print_line_cursor#10 ) - (byte*) print_char_cursor#88 ← phi( main::@2/(byte*) print_char_cursor#30 ) - (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#88 + (byte*) print_char_cursor#90 ← phi( main::@2/(byte*) print_char_cursor#31 ) + (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#90 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#27 call mul16s_compare to:main::@4 main::@4: scope:[main] from main::@3 (byte*) print_line_cursor#28 ← phi( main::@3/(byte*) print_line_cursor#16 ) - (byte*) print_char_cursor#89 ← phi( main::@3/(byte*) print_char_cursor#48 ) - (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#89 + (byte*) print_char_cursor#91 ← phi( main::@3/(byte*) print_char_cursor#49 ) + (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#91 (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#28 to:main::@return main::@return: scope:[main] from main::@4 - (byte*) print_char_cursor#90 ← phi( main::@4/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#92 ← phi( main::@4/(byte*) print_char_cursor#27 ) (byte*) print_line_cursor#29 ← phi( main::@4/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#29 - (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#90 + (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#92 return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 @@ -725,7 +736,7 @@ muls16s::@return: scope:[muls16s] from muls16s::@3 to:@return mul16u_compare: scope:[mul16u_compare] from main::@2 (byte*) print_line_cursor#98 ← phi( main::@2/(byte*) print_line_cursor#45 ) - (byte*) print_char_cursor#151 ← phi( main::@2/(byte*) print_char_cursor#138 ) + (byte*) print_char_cursor#154 ← phi( main::@2/(byte*) print_char_cursor#141 ) (word) mul16u_compare::a#0 ← (number) 0 (word) mul16u_compare::b#0 ← (number) 0 (byte) mul16u_compare::i#0 ← (byte) 0 @@ -735,7 +746,7 @@ mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare:: (byte) mul16u_compare::i#13 ← phi( mul16u_compare/(byte) mul16u_compare::i#0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) (word) mul16u_compare::b#9 ← phi( mul16u_compare/(word) mul16u_compare::b#0 mul16u_compare::@10/(word) mul16u_compare::b#12 ) (word) mul16u_compare::a#9 ← phi( mul16u_compare/(word) mul16u_compare::a#0 mul16u_compare::@10/(word) mul16u_compare::a#12 ) - (byte*) print_char_cursor#139 ← phi( mul16u_compare/(byte*) print_char_cursor#151 mul16u_compare::@10/(byte*) print_char_cursor#152 ) + (byte*) print_char_cursor#142 ← phi( mul16u_compare/(byte*) print_char_cursor#154 mul16u_compare::@10/(byte*) print_char_cursor#155 ) (byte*) print_str::str#1 ← (const string) mul16u_compare::str call print_str to:mul16u_compare::@12 @@ -744,13 +755,13 @@ mul16u_compare::@12: scope:[mul16u_compare] from mul16u_compare::@1 (byte) mul16u_compare::i#12 ← phi( mul16u_compare::@1/(byte) mul16u_compare::i#13 ) (word) mul16u_compare::b#6 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#9 ) (word) mul16u_compare::a#6 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#9 ) - (byte*) print_char_cursor#91 ← phi( mul16u_compare::@1/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#91 + (byte*) print_char_cursor#93 ← phi( mul16u_compare::@1/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#93 (byte) mul16u_compare::j#0 ← (byte) 0 to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_compare::@5 (byte*) print_line_cursor#86 ← phi( mul16u_compare::@12/(byte*) print_line_cursor#90 mul16u_compare::@5/(byte*) print_line_cursor#65 ) - (byte*) print_char_cursor#174 ← phi( mul16u_compare::@12/(byte*) print_char_cursor#28 mul16u_compare::@5/(byte*) print_char_cursor#161 ) + (byte*) print_char_cursor#177 ← phi( mul16u_compare::@12/(byte*) print_char_cursor#29 mul16u_compare::@5/(byte*) print_char_cursor#164 ) (byte) mul16u_compare::i#11 ← phi( mul16u_compare::@12/(byte) mul16u_compare::i#12 mul16u_compare::@5/(byte) mul16u_compare::i#3 ) (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@12/(byte) mul16u_compare::j#0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) (word) mul16u_compare::b#2 ← phi( mul16u_compare::@12/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#7 ) @@ -766,7 +777,7 @@ mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_comp to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2 (byte*) print_line_cursor#82 ← phi( mul16u_compare::@2/(byte*) print_line_cursor#86 ) - (byte*) print_char_cursor#172 ← phi( mul16u_compare::@2/(byte*) print_char_cursor#174 ) + (byte*) print_char_cursor#175 ← phi( mul16u_compare::@2/(byte*) print_char_cursor#177 ) (byte) mul16u_compare::i#10 ← phi( mul16u_compare::@2/(byte) mul16u_compare::i#11 ) (byte) mul16u_compare::j#9 ← phi( mul16u_compare::@2/(byte) mul16u_compare::j#10 ) (word) mul16u_compare::b#3 ← phi( mul16u_compare::@2/(word) mul16u_compare::b#1 ) @@ -781,7 +792,7 @@ mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2 to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 (byte*) print_line_cursor#78 ← phi( mul16u_compare::@13/(byte*) print_line_cursor#82 ) - (byte*) print_char_cursor#170 ← phi( mul16u_compare::@13/(byte*) print_char_cursor#172 ) + (byte*) print_char_cursor#173 ← phi( mul16u_compare::@13/(byte*) print_char_cursor#175 ) (byte) mul16u_compare::i#9 ← phi( mul16u_compare::@13/(byte) mul16u_compare::i#10 ) (byte) mul16u_compare::j#8 ← phi( mul16u_compare::@13/(byte) mul16u_compare::j#9 ) (dword) mul16u_compare::ms#4 ← phi( mul16u_compare::@13/(dword) mul16u_compare::ms#0 ) @@ -797,7 +808,7 @@ mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 to:mul16u_compare::@15 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14 (byte*) print_line_cursor#72 ← phi( mul16u_compare::@14/(byte*) print_line_cursor#78 ) - (byte*) print_char_cursor#166 ← phi( mul16u_compare::@14/(byte*) print_char_cursor#170 ) + (byte*) print_char_cursor#169 ← phi( mul16u_compare::@14/(byte*) print_char_cursor#173 ) (byte) mul16u_compare::i#7 ← phi( mul16u_compare::@14/(byte) mul16u_compare::i#9 ) (word) mul16u_compare::b#13 ← phi( mul16u_compare::@14/(word) mul16u_compare::b#4 ) (word) mul16u_compare::a#13 ← phi( mul16u_compare::@14/(word) mul16u_compare::a#4 ) @@ -814,7 +825,7 @@ mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14 to:mul16u_compare::@6 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@6 (byte*) print_line_cursor#63 ← phi( mul16u_compare::@15/(byte*) print_line_cursor#72 mul16u_compare::@6/(byte*) print_line_cursor#73 ) - (byte*) print_char_cursor#159 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#166 mul16u_compare::@6/(byte*) print_char_cursor#167 ) + (byte*) print_char_cursor#162 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#169 mul16u_compare::@6/(byte*) print_char_cursor#170 ) (byte) mul16u_compare::i#5 ← phi( mul16u_compare::@15/(byte) mul16u_compare::i#7 mul16u_compare::@6/(byte) mul16u_compare::i#8 ) (dword) mul16u_compare::mf#3 ← phi( mul16u_compare::@15/(dword) mul16u_compare::mf#0 mul16u_compare::@6/(dword) mul16u_compare::mf#5 ) (word) mul16u_compare::b#10 ← phi( mul16u_compare::@15/(word) mul16u_compare::b#13 mul16u_compare::@6/(word) mul16u_compare::b#14 ) @@ -829,7 +840,7 @@ mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_comp to:mul16u_compare::@7 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15 (byte*) print_line_cursor#73 ← phi( mul16u_compare::@15/(byte*) print_line_cursor#72 ) - (byte*) print_char_cursor#167 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#166 ) + (byte*) print_char_cursor#170 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#169 ) (byte) mul16u_compare::i#8 ← phi( mul16u_compare::@15/(byte) mul16u_compare::i#7 ) (dword) mul16u_compare::mf#5 ← phi( mul16u_compare::@15/(dword) mul16u_compare::mf#0 ) (word) mul16u_compare::b#14 ← phi( mul16u_compare::@15/(word) mul16u_compare::b#13 ) @@ -841,7 +852,7 @@ mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15 to:mul16u_compare::@3 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@3 mul16u_compare::@7 (byte*) print_line_cursor#55 ← phi( mul16u_compare::@3/(byte*) print_line_cursor#63 mul16u_compare::@7/(byte*) print_line_cursor#64 ) - (byte*) print_char_cursor#153 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#159 mul16u_compare::@7/(byte*) print_char_cursor#160 ) + (byte*) print_char_cursor#156 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#162 mul16u_compare::@7/(byte*) print_char_cursor#163 ) (byte) mul16u_compare::i#4 ← phi( mul16u_compare::@3/(byte) mul16u_compare::i#5 mul16u_compare::@7/(byte) mul16u_compare::i#6 ) (dword) mul16u_compare::mf#2 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mf#3 mul16u_compare::@7/(dword) mul16u_compare::mf#4 ) (dword) mul16u_compare::mn#5 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mn#1 mul16u_compare::@7/(dword) mul16u_compare::mn#6 ) @@ -856,7 +867,7 @@ mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@3 mul16u_compa to:mul16u_compare::@8 mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@3 (byte*) print_line_cursor#64 ← phi( mul16u_compare::@3/(byte*) print_line_cursor#63 ) - (byte*) print_char_cursor#160 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#159 ) + (byte*) print_char_cursor#163 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#162 ) (byte) mul16u_compare::i#6 ← phi( mul16u_compare::@3/(byte) mul16u_compare::i#5 ) (dword) mul16u_compare::mf#4 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mf#3 ) (dword) mul16u_compare::mn#6 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mn#1 ) @@ -868,7 +879,7 @@ mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@3 to:mul16u_compare::@4 mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 (byte*) print_line_cursor#65 ← phi( mul16u_compare::@4/(byte*) print_line_cursor#55 ) - (byte*) print_char_cursor#161 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#153 ) + (byte*) print_char_cursor#164 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#156 ) (byte) mul16u_compare::i#3 ← phi( mul16u_compare::@4/(byte) mul16u_compare::i#4 ) (word) mul16u_compare::b#7 ← phi( mul16u_compare::@4/(word) mul16u_compare::b#8 ) (word) mul16u_compare::a#7 ← phi( mul16u_compare::@4/(word) mul16u_compare::a#8 ) @@ -879,7 +890,7 @@ mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 to:mul16u_compare::@10 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4 (byte*) print_line_cursor#46 ← phi( mul16u_compare::@4/(byte*) print_line_cursor#55 ) - (byte*) print_char_cursor#140 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#153 ) + (byte*) print_char_cursor#143 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#156 ) (dword) mul16u_compare::mf#1 ← phi( mul16u_compare::@4/(dword) mul16u_compare::mf#2 ) (dword) mul16u_compare::mn#2 ← phi( mul16u_compare::@4/(dword) mul16u_compare::mn#5 ) (dword) mul16u_compare::ms#3 ← phi( mul16u_compare::@4/(dword) mul16u_compare::ms#6 ) @@ -895,14 +906,14 @@ mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4 to:mul16u_compare::@16 mul16u_compare::@16: scope:[mul16u_compare] from mul16u_compare::@8 (byte*) print_line_cursor#30 ← phi( mul16u_compare::@8/(byte*) print_line_cursor#14 ) - (byte*) print_char_cursor#92 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#45 ) - (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#92 + (byte*) print_char_cursor#94 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#46 ) + (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#94 (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#30 to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@16 mul16u_compare::@19 (byte*) print_line_cursor#31 ← phi( mul16u_compare::@16/(byte*) print_line_cursor#9 mul16u_compare::@19/(byte*) print_line_cursor#12 ) - (byte*) print_char_cursor#93 ← phi( mul16u_compare::@16/(byte*) print_char_cursor#29 mul16u_compare::@19/(byte*) print_char_cursor#33 ) - (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#93 + (byte*) print_char_cursor#95 ← phi( mul16u_compare::@16/(byte*) print_char_cursor#30 mul16u_compare::@19/(byte*) print_char_cursor#34 ) + (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#95 (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#31 return to:@return @@ -910,36 +921,36 @@ mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@5 (word) mul16u_compare::b#12 ← phi( mul16u_compare::@5/(word) mul16u_compare::b#7 ) (word) mul16u_compare::a#12 ← phi( mul16u_compare::@5/(word) mul16u_compare::a#7 ) (byte*) print_line_cursor#56 ← phi( mul16u_compare::@5/(byte*) print_line_cursor#65 ) - (byte*) print_char_cursor#152 ← phi( mul16u_compare::@5/(byte*) print_char_cursor#161 ) + (byte*) print_char_cursor#155 ← phi( mul16u_compare::@5/(byte*) print_char_cursor#164 ) (byte) mul16u_compare::i#2 ← phi( mul16u_compare::@5/(byte) mul16u_compare::i#3 ) (byte) mul16u_compare::i#1 ← (byte) mul16u_compare::i#2 + rangenext(0,$f) (bool~) mul16u_compare::$17 ← (byte) mul16u_compare::i#1 != rangelast(0,$f) if((bool~) mul16u_compare::$17) goto mul16u_compare::@1 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - (byte*) print_char_cursor#141 ← phi( mul16u_compare::@10/(byte*) print_char_cursor#152 ) + (byte*) print_char_cursor#144 ← phi( mul16u_compare::@10/(byte*) print_char_cursor#155 ) (byte*) print_line_cursor#47 ← phi( mul16u_compare::@10/(byte*) print_line_cursor#56 ) call print_ln to:mul16u_compare::@17 mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11 - (byte*) print_char_cursor#94 ← phi( mul16u_compare::@11/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#96 ← phi( mul16u_compare::@11/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#32 ← phi( mul16u_compare::@11/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#32 - (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#94 + (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#96 (byte*) print_str::str#2 ← (const string) mul16u_compare::str1 call print_str to:mul16u_compare::@18 mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17 (byte*) print_line_cursor#48 ← phi( mul16u_compare::@17/(byte*) print_line_cursor#11 ) - (byte*) print_char_cursor#95 ← phi( mul16u_compare::@17/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#95 + (byte*) print_char_cursor#97 ← phi( mul16u_compare::@17/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#97 call print_ln to:mul16u_compare::@19 mul16u_compare::@19: scope:[mul16u_compare] from mul16u_compare::@18 - (byte*) print_char_cursor#96 ← phi( mul16u_compare::@18/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#98 ← phi( mul16u_compare::@18/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#33 ← phi( mul16u_compare::@18/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#33 - (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#96 + (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#98 to:mul16u_compare::@return mul16u_error: scope:[mul16u_error] from mul16u_compare::@8 (byte*) print_line_cursor#102 ← phi( mul16u_compare::@8/(byte*) print_line_cursor#46 ) @@ -948,7 +959,7 @@ mul16u_error: scope:[mul16u_error] from mul16u_compare::@8 (dword) mul16u_error::ms#6 ← phi( mul16u_compare::@8/(dword) mul16u_error::ms#0 ) (word) mul16u_error::b#4 ← phi( mul16u_compare::@8/(word) mul16u_error::b#0 ) (word) mul16u_error::a#2 ← phi( mul16u_compare::@8/(word) mul16u_error::a#0 ) - (byte*) print_char_cursor#142 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#140 ) + (byte*) print_char_cursor#145 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#143 ) (byte*) print_str::str#3 ← (const string) mul16u_error::str call print_str to:mul16u_error::@1 @@ -959,8 +970,8 @@ mul16u_error::@1: scope:[mul16u_error] from mul16u_error (dword) mul16u_error::ms#5 ← phi( mul16u_error/(dword) mul16u_error::ms#6 ) (word) mul16u_error::b#3 ← phi( mul16u_error/(word) mul16u_error::b#4 ) (word) mul16u_error::a#1 ← phi( mul16u_error/(word) mul16u_error::a#2 ) - (byte*) print_char_cursor#97 ← phi( mul16u_error/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#97 + (byte*) print_char_cursor#99 ← phi( mul16u_error/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#99 (word) print_word::w#3 ← (word) mul16u_error::a#1 call print_word to:mul16u_error::@2 @@ -970,8 +981,8 @@ mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 (dword) mul16u_error::mn#6 ← phi( mul16u_error::@1/(dword) mul16u_error::mn#7 ) (dword) mul16u_error::ms#4 ← phi( mul16u_error::@1/(dword) mul16u_error::ms#5 ) (word) mul16u_error::b#2 ← phi( mul16u_error::@1/(word) mul16u_error::b#3 ) - (byte*) print_char_cursor#98 ← phi( mul16u_error::@1/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#98 + (byte*) print_char_cursor#100 ← phi( mul16u_error::@1/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#100 (byte*) print_str::str#4 ← (const string) mul16u_error::str1 call print_str to:mul16u_error::@3 @@ -981,8 +992,8 @@ mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 (dword) mul16u_error::mn#5 ← phi( mul16u_error::@2/(dword) mul16u_error::mn#6 ) (dword) mul16u_error::ms#3 ← phi( mul16u_error::@2/(dword) mul16u_error::ms#4 ) (word) mul16u_error::b#1 ← phi( mul16u_error::@2/(word) mul16u_error::b#2 ) - (byte*) print_char_cursor#99 ← phi( mul16u_error::@2/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#99 + (byte*) print_char_cursor#101 ← phi( mul16u_error::@2/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#101 (word) print_word::w#4 ← (word) mul16u_error::b#1 call print_word to:mul16u_error::@4 @@ -991,8 +1002,8 @@ mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 (dword) mul16u_error::mf#6 ← phi( mul16u_error::@3/(dword) mul16u_error::mf#7 ) (dword) mul16u_error::mn#4 ← phi( mul16u_error::@3/(dword) mul16u_error::mn#5 ) (dword) mul16u_error::ms#2 ← phi( mul16u_error::@3/(dword) mul16u_error::ms#3 ) - (byte*) print_char_cursor#100 ← phi( mul16u_error::@3/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#100 + (byte*) print_char_cursor#102 ← phi( mul16u_error::@3/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#102 (byte*) print_str::str#5 ← (const string) mul16u_error::str2 call print_str to:mul16u_error::@5 @@ -1001,8 +1012,8 @@ mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 (dword) mul16u_error::mf#5 ← phi( mul16u_error::@4/(dword) mul16u_error::mf#6 ) (dword) mul16u_error::mn#3 ← phi( mul16u_error::@4/(dword) mul16u_error::mn#4 ) (dword) mul16u_error::ms#1 ← phi( mul16u_error::@4/(dword) mul16u_error::ms#2 ) - (byte*) print_char_cursor#101 ← phi( mul16u_error::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#101 + (byte*) print_char_cursor#103 ← phi( mul16u_error::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#103 (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#1 call print_dword to:mul16u_error::@6 @@ -1010,8 +1021,8 @@ mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 (byte*) print_line_cursor#79 ← phi( mul16u_error::@5/(byte*) print_line_cursor#83 ) (dword) mul16u_error::mf#4 ← phi( mul16u_error::@5/(dword) mul16u_error::mf#5 ) (dword) mul16u_error::mn#2 ← phi( mul16u_error::@5/(dword) mul16u_error::mn#3 ) - (byte*) print_char_cursor#102 ← phi( mul16u_error::@5/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#102 + (byte*) print_char_cursor#104 ← phi( mul16u_error::@5/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#104 (byte*) print_str::str#6 ← (const string) mul16u_error::str3 call print_str to:mul16u_error::@7 @@ -1019,49 +1030,49 @@ mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 (byte*) print_line_cursor#74 ← phi( mul16u_error::@6/(byte*) print_line_cursor#79 ) (dword) mul16u_error::mf#3 ← phi( mul16u_error::@6/(dword) mul16u_error::mf#4 ) (dword) mul16u_error::mn#1 ← phi( mul16u_error::@6/(dword) mul16u_error::mn#2 ) - (byte*) print_char_cursor#103 ← phi( mul16u_error::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#103 + (byte*) print_char_cursor#105 ← phi( mul16u_error::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#105 (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#1 call print_dword to:mul16u_error::@8 mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 (byte*) print_line_cursor#66 ← phi( mul16u_error::@7/(byte*) print_line_cursor#74 ) (dword) mul16u_error::mf#2 ← phi( mul16u_error::@7/(dword) mul16u_error::mf#3 ) - (byte*) print_char_cursor#104 ← phi( mul16u_error::@7/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#104 + (byte*) print_char_cursor#106 ← phi( mul16u_error::@7/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#106 (byte*) print_str::str#7 ← (const string) mul16u_error::str4 call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 (byte*) print_line_cursor#57 ← phi( mul16u_error::@8/(byte*) print_line_cursor#66 ) (dword) mul16u_error::mf#1 ← phi( mul16u_error::@8/(dword) mul16u_error::mf#2 ) - (byte*) print_char_cursor#105 ← phi( mul16u_error::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#105 + (byte*) print_char_cursor#107 ← phi( mul16u_error::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#107 (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#1 call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 (byte*) print_line_cursor#49 ← phi( mul16u_error::@9/(byte*) print_line_cursor#57 ) - (byte*) print_char_cursor#106 ← phi( mul16u_error::@9/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#106 + (byte*) print_char_cursor#108 ← phi( mul16u_error::@9/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#108 call print_ln to:mul16u_error::@11 mul16u_error::@11: scope:[mul16u_error] from mul16u_error::@10 - (byte*) print_char_cursor#107 ← phi( mul16u_error::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#109 ← phi( mul16u_error::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#34 ← phi( mul16u_error::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#34 - (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#107 + (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#109 to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@11 (byte*) print_line_cursor#35 ← phi( mul16u_error::@11/(byte*) print_line_cursor#13 ) - (byte*) print_char_cursor#108 ← phi( mul16u_error::@11/(byte*) print_char_cursor#44 ) - (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#108 + (byte*) print_char_cursor#110 ← phi( mul16u_error::@11/(byte*) print_char_cursor#45 ) + (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#110 (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#35 return to:@return mul16s_compare: scope:[mul16s_compare] from main::@3 (byte*) print_line_cursor#100 ← phi( main::@3/(byte*) print_line_cursor#6 ) - (byte*) print_char_cursor#154 ← phi( main::@3/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#157 ← phi( main::@3/(byte*) print_char_cursor#26 ) (signed word) mul16s_compare::a#0 ← (number) -$7fff (signed word) mul16s_compare::b#0 ← (number) -$7fff (byte) mul16s_compare::i#0 ← (byte) 0 @@ -1071,7 +1082,7 @@ mul16s_compare::@1: scope:[mul16s_compare] from mul16s_compare mul16s_compare:: (byte) mul16s_compare::i#13 ← phi( mul16s_compare/(byte) mul16s_compare::i#0 mul16s_compare::@10/(byte) mul16s_compare::i#1 ) (signed word) mul16s_compare::b#9 ← phi( mul16s_compare/(signed word) mul16s_compare::b#0 mul16s_compare::@10/(signed word) mul16s_compare::b#12 ) (signed word) mul16s_compare::a#9 ← phi( mul16s_compare/(signed word) mul16s_compare::a#0 mul16s_compare::@10/(signed word) mul16s_compare::a#12 ) - (byte*) print_char_cursor#143 ← phi( mul16s_compare/(byte*) print_char_cursor#154 mul16s_compare::@10/(byte*) print_char_cursor#155 ) + (byte*) print_char_cursor#146 ← phi( mul16s_compare/(byte*) print_char_cursor#157 mul16s_compare::@10/(byte*) print_char_cursor#158 ) (byte*) print_str::str#8 ← (const string) mul16s_compare::str call print_str to:mul16s_compare::@12 @@ -1080,13 +1091,13 @@ mul16s_compare::@12: scope:[mul16s_compare] from mul16s_compare::@1 (byte) mul16s_compare::i#12 ← phi( mul16s_compare::@1/(byte) mul16s_compare::i#13 ) (signed word) mul16s_compare::b#6 ← phi( mul16s_compare::@1/(signed word) mul16s_compare::b#9 ) (signed word) mul16s_compare::a#6 ← phi( mul16s_compare::@1/(signed word) mul16s_compare::a#9 ) - (byte*) print_char_cursor#109 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#109 + (byte*) print_char_cursor#111 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#111 (byte) mul16s_compare::j#0 ← (byte) 0 to:mul16s_compare::@2 mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@12 mul16s_compare::@5 (byte*) print_line_cursor#88 ← phi( mul16s_compare::@12/(byte*) print_line_cursor#92 mul16s_compare::@5/(byte*) print_line_cursor#69 ) - (byte*) print_char_cursor#175 ← phi( mul16s_compare::@12/(byte*) print_char_cursor#46 mul16s_compare::@5/(byte*) print_char_cursor#164 ) + (byte*) print_char_cursor#178 ← phi( mul16s_compare::@12/(byte*) print_char_cursor#47 mul16s_compare::@5/(byte*) print_char_cursor#167 ) (byte) mul16s_compare::i#11 ← phi( mul16s_compare::@12/(byte) mul16s_compare::i#12 mul16s_compare::@5/(byte) mul16s_compare::i#3 ) (byte) mul16s_compare::j#10 ← phi( mul16s_compare::@12/(byte) mul16s_compare::j#0 mul16s_compare::@5/(byte) mul16s_compare::j#1 ) (signed word) mul16s_compare::b#2 ← phi( mul16s_compare::@12/(signed word) mul16s_compare::b#6 mul16s_compare::@5/(signed word) mul16s_compare::b#7 ) @@ -1102,7 +1113,7 @@ mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@12 mul16s_comp to:mul16s_compare::@13 mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@2 (byte*) print_line_cursor#84 ← phi( mul16s_compare::@2/(byte*) print_line_cursor#88 ) - (byte*) print_char_cursor#173 ← phi( mul16s_compare::@2/(byte*) print_char_cursor#175 ) + (byte*) print_char_cursor#176 ← phi( mul16s_compare::@2/(byte*) print_char_cursor#178 ) (byte) mul16s_compare::i#10 ← phi( mul16s_compare::@2/(byte) mul16s_compare::i#11 ) (byte) mul16s_compare::j#9 ← phi( mul16s_compare::@2/(byte) mul16s_compare::j#10 ) (signed word) mul16s_compare::b#3 ← phi( mul16s_compare::@2/(signed word) mul16s_compare::b#1 ) @@ -1117,7 +1128,7 @@ mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@2 to:mul16s_compare::@14 mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 (byte*) print_line_cursor#80 ← phi( mul16s_compare::@13/(byte*) print_line_cursor#84 ) - (byte*) print_char_cursor#171 ← phi( mul16s_compare::@13/(byte*) print_char_cursor#173 ) + (byte*) print_char_cursor#174 ← phi( mul16s_compare::@13/(byte*) print_char_cursor#176 ) (byte) mul16s_compare::i#9 ← phi( mul16s_compare::@13/(byte) mul16s_compare::i#10 ) (byte) mul16s_compare::j#8 ← phi( mul16s_compare::@13/(byte) mul16s_compare::j#9 ) (signed dword) mul16s_compare::ms#4 ← phi( mul16s_compare::@13/(signed dword) mul16s_compare::ms#0 ) @@ -1133,7 +1144,7 @@ mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 to:mul16s_compare::@15 mul16s_compare::@15: scope:[mul16s_compare] from mul16s_compare::@14 (byte*) print_line_cursor#75 ← phi( mul16s_compare::@14/(byte*) print_line_cursor#80 ) - (byte*) print_char_cursor#168 ← phi( mul16s_compare::@14/(byte*) print_char_cursor#171 ) + (byte*) print_char_cursor#171 ← phi( mul16s_compare::@14/(byte*) print_char_cursor#174 ) (byte) mul16s_compare::i#7 ← phi( mul16s_compare::@14/(byte) mul16s_compare::i#9 ) (signed word) mul16s_compare::b#13 ← phi( mul16s_compare::@14/(signed word) mul16s_compare::b#4 ) (signed word) mul16s_compare::a#13 ← phi( mul16s_compare::@14/(signed word) mul16s_compare::a#4 ) @@ -1150,7 +1161,7 @@ mul16s_compare::@15: scope:[mul16s_compare] from mul16s_compare::@14 to:mul16s_compare::@6 mul16s_compare::@3: scope:[mul16s_compare] from mul16s_compare::@15 mul16s_compare::@6 (byte*) print_line_cursor#67 ← phi( mul16s_compare::@15/(byte*) print_line_cursor#75 mul16s_compare::@6/(byte*) print_line_cursor#76 ) - (byte*) print_char_cursor#162 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#168 mul16s_compare::@6/(byte*) print_char_cursor#169 ) + (byte*) print_char_cursor#165 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#171 mul16s_compare::@6/(byte*) print_char_cursor#172 ) (byte) mul16s_compare::i#5 ← phi( mul16s_compare::@15/(byte) mul16s_compare::i#7 mul16s_compare::@6/(byte) mul16s_compare::i#8 ) (signed dword) mul16s_compare::mf#3 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::mf#0 mul16s_compare::@6/(signed dword) mul16s_compare::mf#5 ) (signed word) mul16s_compare::b#10 ← phi( mul16s_compare::@15/(signed word) mul16s_compare::b#13 mul16s_compare::@6/(signed word) mul16s_compare::b#14 ) @@ -1165,7 +1176,7 @@ mul16s_compare::@3: scope:[mul16s_compare] from mul16s_compare::@15 mul16s_comp to:mul16s_compare::@7 mul16s_compare::@6: scope:[mul16s_compare] from mul16s_compare::@15 (byte*) print_line_cursor#76 ← phi( mul16s_compare::@15/(byte*) print_line_cursor#75 ) - (byte*) print_char_cursor#169 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#168 ) + (byte*) print_char_cursor#172 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#171 ) (byte) mul16s_compare::i#8 ← phi( mul16s_compare::@15/(byte) mul16s_compare::i#7 ) (signed dword) mul16s_compare::mf#5 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::mf#0 ) (signed word) mul16s_compare::b#14 ← phi( mul16s_compare::@15/(signed word) mul16s_compare::b#13 ) @@ -1177,7 +1188,7 @@ mul16s_compare::@6: scope:[mul16s_compare] from mul16s_compare::@15 to:mul16s_compare::@3 mul16s_compare::@4: scope:[mul16s_compare] from mul16s_compare::@3 mul16s_compare::@7 (byte*) print_line_cursor#58 ← phi( mul16s_compare::@3/(byte*) print_line_cursor#67 mul16s_compare::@7/(byte*) print_line_cursor#68 ) - (byte*) print_char_cursor#156 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#162 mul16s_compare::@7/(byte*) print_char_cursor#163 ) + (byte*) print_char_cursor#159 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#165 mul16s_compare::@7/(byte*) print_char_cursor#166 ) (byte) mul16s_compare::i#4 ← phi( mul16s_compare::@3/(byte) mul16s_compare::i#5 mul16s_compare::@7/(byte) mul16s_compare::i#6 ) (signed dword) mul16s_compare::mf#2 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mf#3 mul16s_compare::@7/(signed dword) mul16s_compare::mf#4 ) (signed dword) mul16s_compare::mn#5 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mn#1 mul16s_compare::@7/(signed dword) mul16s_compare::mn#6 ) @@ -1192,7 +1203,7 @@ mul16s_compare::@4: scope:[mul16s_compare] from mul16s_compare::@3 mul16s_compa to:mul16s_compare::@8 mul16s_compare::@7: scope:[mul16s_compare] from mul16s_compare::@3 (byte*) print_line_cursor#68 ← phi( mul16s_compare::@3/(byte*) print_line_cursor#67 ) - (byte*) print_char_cursor#163 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#162 ) + (byte*) print_char_cursor#166 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#165 ) (byte) mul16s_compare::i#6 ← phi( mul16s_compare::@3/(byte) mul16s_compare::i#5 ) (signed dword) mul16s_compare::mf#4 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mf#3 ) (signed dword) mul16s_compare::mn#6 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mn#1 ) @@ -1204,7 +1215,7 @@ mul16s_compare::@7: scope:[mul16s_compare] from mul16s_compare::@3 to:mul16s_compare::@4 mul16s_compare::@5: scope:[mul16s_compare] from mul16s_compare::@4 (byte*) print_line_cursor#69 ← phi( mul16s_compare::@4/(byte*) print_line_cursor#58 ) - (byte*) print_char_cursor#164 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#156 ) + (byte*) print_char_cursor#167 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#159 ) (byte) mul16s_compare::i#3 ← phi( mul16s_compare::@4/(byte) mul16s_compare::i#4 ) (signed word) mul16s_compare::b#7 ← phi( mul16s_compare::@4/(signed word) mul16s_compare::b#8 ) (signed word) mul16s_compare::a#7 ← phi( mul16s_compare::@4/(signed word) mul16s_compare::a#8 ) @@ -1215,7 +1226,7 @@ mul16s_compare::@5: scope:[mul16s_compare] from mul16s_compare::@4 to:mul16s_compare::@10 mul16s_compare::@8: scope:[mul16s_compare] from mul16s_compare::@4 (byte*) print_line_cursor#50 ← phi( mul16s_compare::@4/(byte*) print_line_cursor#58 ) - (byte*) print_char_cursor#144 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#156 ) + (byte*) print_char_cursor#147 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#159 ) (signed dword) mul16s_compare::mf#1 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::mf#2 ) (signed dword) mul16s_compare::mn#2 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::mn#5 ) (signed dword) mul16s_compare::ms#3 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::ms#6 ) @@ -1231,14 +1242,14 @@ mul16s_compare::@8: scope:[mul16s_compare] from mul16s_compare::@4 to:mul16s_compare::@16 mul16s_compare::@16: scope:[mul16s_compare] from mul16s_compare::@8 (byte*) print_line_cursor#36 ← phi( mul16s_compare::@8/(byte*) print_line_cursor#20 ) - (byte*) print_char_cursor#110 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#63 ) - (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#110 + (byte*) print_char_cursor#112 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#64 ) + (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#112 (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#36 to:mul16s_compare::@return mul16s_compare::@return: scope:[mul16s_compare] from mul16s_compare::@16 mul16s_compare::@19 (byte*) print_line_cursor#37 ← phi( mul16s_compare::@16/(byte*) print_line_cursor#15 mul16s_compare::@19/(byte*) print_line_cursor#18 ) - (byte*) print_char_cursor#111 ← phi( mul16s_compare::@16/(byte*) print_char_cursor#47 mul16s_compare::@19/(byte*) print_char_cursor#51 ) - (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#111 + (byte*) print_char_cursor#113 ← phi( mul16s_compare::@16/(byte*) print_char_cursor#48 mul16s_compare::@19/(byte*) print_char_cursor#52 ) + (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#113 (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#37 return to:@return @@ -1246,36 +1257,36 @@ mul16s_compare::@10: scope:[mul16s_compare] from mul16s_compare::@5 (signed word) mul16s_compare::b#12 ← phi( mul16s_compare::@5/(signed word) mul16s_compare::b#7 ) (signed word) mul16s_compare::a#12 ← phi( mul16s_compare::@5/(signed word) mul16s_compare::a#7 ) (byte*) print_line_cursor#59 ← phi( mul16s_compare::@5/(byte*) print_line_cursor#69 ) - (byte*) print_char_cursor#155 ← phi( mul16s_compare::@5/(byte*) print_char_cursor#164 ) + (byte*) print_char_cursor#158 ← phi( mul16s_compare::@5/(byte*) print_char_cursor#167 ) (byte) mul16s_compare::i#2 ← phi( mul16s_compare::@5/(byte) mul16s_compare::i#3 ) (byte) mul16s_compare::i#1 ← (byte) mul16s_compare::i#2 + rangenext(0,$f) (bool~) mul16s_compare::$17 ← (byte) mul16s_compare::i#1 != rangelast(0,$f) if((bool~) mul16s_compare::$17) goto mul16s_compare::@1 to:mul16s_compare::@11 mul16s_compare::@11: scope:[mul16s_compare] from mul16s_compare::@10 - (byte*) print_char_cursor#145 ← phi( mul16s_compare::@10/(byte*) print_char_cursor#155 ) + (byte*) print_char_cursor#148 ← phi( mul16s_compare::@10/(byte*) print_char_cursor#158 ) (byte*) print_line_cursor#51 ← phi( mul16s_compare::@10/(byte*) print_line_cursor#59 ) call print_ln to:mul16s_compare::@17 mul16s_compare::@17: scope:[mul16s_compare] from mul16s_compare::@11 - (byte*) print_char_cursor#112 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#114 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#38 ← phi( mul16s_compare::@11/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#38 - (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#112 + (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#114 (byte*) print_str::str#9 ← (const string) mul16s_compare::str1 call print_str to:mul16s_compare::@18 mul16s_compare::@18: scope:[mul16s_compare] from mul16s_compare::@17 (byte*) print_line_cursor#52 ← phi( mul16s_compare::@17/(byte*) print_line_cursor#17 ) - (byte*) print_char_cursor#113 ← phi( mul16s_compare::@17/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#113 + (byte*) print_char_cursor#115 ← phi( mul16s_compare::@17/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#115 call print_ln to:mul16s_compare::@19 mul16s_compare::@19: scope:[mul16s_compare] from mul16s_compare::@18 - (byte*) print_char_cursor#114 ← phi( mul16s_compare::@18/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#116 ← phi( mul16s_compare::@18/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#39 ← phi( mul16s_compare::@18/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#39 - (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#114 + (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#116 to:mul16s_compare::@return mul16s_error: scope:[mul16s_error] from mul16s_compare::@8 (byte*) print_line_cursor#103 ← phi( mul16s_compare::@8/(byte*) print_line_cursor#50 ) @@ -1284,7 +1295,7 @@ mul16s_error: scope:[mul16s_error] from mul16s_compare::@8 (signed dword) mul16s_error::ms#6 ← phi( mul16s_compare::@8/(signed dword) mul16s_error::ms#0 ) (signed word) mul16s_error::b#4 ← phi( mul16s_compare::@8/(signed word) mul16s_error::b#0 ) (signed word) mul16s_error::a#2 ← phi( mul16s_compare::@8/(signed word) mul16s_error::a#0 ) - (byte*) print_char_cursor#146 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#144 ) + (byte*) print_char_cursor#149 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#147 ) (byte*) print_str::str#10 ← (const string) mul16s_error::str call print_str to:mul16s_error::@1 @@ -1295,8 +1306,8 @@ mul16s_error::@1: scope:[mul16s_error] from mul16s_error (signed dword) mul16s_error::ms#5 ← phi( mul16s_error/(signed dword) mul16s_error::ms#6 ) (signed word) mul16s_error::b#3 ← phi( mul16s_error/(signed word) mul16s_error::b#4 ) (signed word) mul16s_error::a#1 ← phi( mul16s_error/(signed word) mul16s_error::a#2 ) - (byte*) print_char_cursor#115 ← phi( mul16s_error/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#115 + (byte*) print_char_cursor#117 ← phi( mul16s_error/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#117 (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#1 call print_sword to:mul16s_error::@2 @@ -1306,8 +1317,8 @@ mul16s_error::@2: scope:[mul16s_error] from mul16s_error::@1 (signed dword) mul16s_error::mn#6 ← phi( mul16s_error::@1/(signed dword) mul16s_error::mn#7 ) (signed dword) mul16s_error::ms#4 ← phi( mul16s_error::@1/(signed dword) mul16s_error::ms#5 ) (signed word) mul16s_error::b#2 ← phi( mul16s_error::@1/(signed word) mul16s_error::b#3 ) - (byte*) print_char_cursor#116 ← phi( mul16s_error::@1/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#116 + (byte*) print_char_cursor#118 ← phi( mul16s_error::@1/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#118 (byte*) print_str::str#11 ← (const string) mul16s_error::str1 call print_str to:mul16s_error::@3 @@ -1317,8 +1328,8 @@ mul16s_error::@3: scope:[mul16s_error] from mul16s_error::@2 (signed dword) mul16s_error::mn#5 ← phi( mul16s_error::@2/(signed dword) mul16s_error::mn#6 ) (signed dword) mul16s_error::ms#3 ← phi( mul16s_error::@2/(signed dword) mul16s_error::ms#4 ) (signed word) mul16s_error::b#1 ← phi( mul16s_error::@2/(signed word) mul16s_error::b#2 ) - (byte*) print_char_cursor#117 ← phi( mul16s_error::@2/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#117 + (byte*) print_char_cursor#119 ← phi( mul16s_error::@2/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#119 (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#1 call print_sword to:mul16s_error::@4 @@ -1327,8 +1338,8 @@ mul16s_error::@4: scope:[mul16s_error] from mul16s_error::@3 (signed dword) mul16s_error::mf#6 ← phi( mul16s_error::@3/(signed dword) mul16s_error::mf#7 ) (signed dword) mul16s_error::mn#4 ← phi( mul16s_error::@3/(signed dword) mul16s_error::mn#5 ) (signed dword) mul16s_error::ms#2 ← phi( mul16s_error::@3/(signed dword) mul16s_error::ms#3 ) - (byte*) print_char_cursor#118 ← phi( mul16s_error::@3/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#118 + (byte*) print_char_cursor#120 ← phi( mul16s_error::@3/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#120 (byte*) print_str::str#12 ← (const string) mul16s_error::str2 call print_str to:mul16s_error::@5 @@ -1337,8 +1348,8 @@ mul16s_error::@5: scope:[mul16s_error] from mul16s_error::@4 (signed dword) mul16s_error::mf#5 ← phi( mul16s_error::@4/(signed dword) mul16s_error::mf#6 ) (signed dword) mul16s_error::mn#3 ← phi( mul16s_error::@4/(signed dword) mul16s_error::mn#4 ) (signed dword) mul16s_error::ms#1 ← phi( mul16s_error::@4/(signed dword) mul16s_error::ms#2 ) - (byte*) print_char_cursor#119 ← phi( mul16s_error::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#119 + (byte*) print_char_cursor#121 ← phi( mul16s_error::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#121 (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#1 call print_sdword to:mul16s_error::@6 @@ -1346,8 +1357,8 @@ mul16s_error::@6: scope:[mul16s_error] from mul16s_error::@5 (byte*) print_line_cursor#81 ← phi( mul16s_error::@5/(byte*) print_line_cursor#85 ) (signed dword) mul16s_error::mf#4 ← phi( mul16s_error::@5/(signed dword) mul16s_error::mf#5 ) (signed dword) mul16s_error::mn#2 ← phi( mul16s_error::@5/(signed dword) mul16s_error::mn#3 ) - (byte*) print_char_cursor#120 ← phi( mul16s_error::@5/(byte*) print_char_cursor#16 ) - (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#120 + (byte*) print_char_cursor#122 ← phi( mul16s_error::@5/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#122 (byte*) print_str::str#13 ← (const string) mul16s_error::str3 call print_str to:mul16s_error::@7 @@ -1355,57 +1366,57 @@ mul16s_error::@7: scope:[mul16s_error] from mul16s_error::@6 (byte*) print_line_cursor#77 ← phi( mul16s_error::@6/(byte*) print_line_cursor#81 ) (signed dword) mul16s_error::mf#3 ← phi( mul16s_error::@6/(signed dword) mul16s_error::mf#4 ) (signed dword) mul16s_error::mn#1 ← phi( mul16s_error::@6/(signed dword) mul16s_error::mn#2 ) - (byte*) print_char_cursor#121 ← phi( mul16s_error::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#121 + (byte*) print_char_cursor#123 ← phi( mul16s_error::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#123 (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#1 call print_sdword to:mul16s_error::@8 mul16s_error::@8: scope:[mul16s_error] from mul16s_error::@7 (byte*) print_line_cursor#70 ← phi( mul16s_error::@7/(byte*) print_line_cursor#77 ) (signed dword) mul16s_error::mf#2 ← phi( mul16s_error::@7/(signed dword) mul16s_error::mf#3 ) - (byte*) print_char_cursor#122 ← phi( mul16s_error::@7/(byte*) print_char_cursor#16 ) - (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#122 + (byte*) print_char_cursor#124 ← phi( mul16s_error::@7/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#124 (byte*) print_str::str#14 ← (const string) mul16s_error::str4 call print_str to:mul16s_error::@9 mul16s_error::@9: scope:[mul16s_error] from mul16s_error::@8 (byte*) print_line_cursor#60 ← phi( mul16s_error::@8/(byte*) print_line_cursor#70 ) (signed dword) mul16s_error::mf#1 ← phi( mul16s_error::@8/(signed dword) mul16s_error::mf#2 ) - (byte*) print_char_cursor#123 ← phi( mul16s_error::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#123 + (byte*) print_char_cursor#125 ← phi( mul16s_error::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#125 (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#1 call print_sdword to:mul16s_error::@10 mul16s_error::@10: scope:[mul16s_error] from mul16s_error::@9 (byte*) print_line_cursor#53 ← phi( mul16s_error::@9/(byte*) print_line_cursor#60 ) - (byte*) print_char_cursor#124 ← phi( mul16s_error::@9/(byte*) print_char_cursor#16 ) - (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#124 + (byte*) print_char_cursor#126 ← phi( mul16s_error::@9/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#126 call print_ln to:mul16s_error::@11 mul16s_error::@11: scope:[mul16s_error] from mul16s_error::@10 - (byte*) print_char_cursor#125 ← phi( mul16s_error::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#127 ← phi( mul16s_error::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#40 ← phi( mul16s_error::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#40 - (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#125 + (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#127 to:mul16s_error::@return mul16s_error::@return: scope:[mul16s_error] from mul16s_error::@11 (byte*) print_line_cursor#41 ← phi( mul16s_error::@11/(byte*) print_line_cursor#19 ) - (byte*) print_char_cursor#126 ← phi( mul16s_error::@11/(byte*) print_char_cursor#62 ) - (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#126 + (byte*) print_char_cursor#128 ← phi( mul16s_error::@11/(byte*) print_char_cursor#63 ) + (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#128 (byte*) print_line_cursor#20 ← (byte*) print_line_cursor#41 return to:@return @40: scope:[] from @33 (byte*) print_screen#5 ← phi( @33/(byte*) print_screen#6 ) - (byte*) print_char_cursor#147 ← phi( @33/(byte*) print_char_cursor#157 ) + (byte*) print_char_cursor#150 ← phi( @33/(byte*) print_char_cursor#160 ) (byte*) print_line_cursor#54 ← phi( @33/(byte*) print_line_cursor#61 ) call main to:@41 @41: scope:[] from @40 - (byte*) print_char_cursor#127 ← phi( @40/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#129 ← phi( @40/(byte*) print_char_cursor#28 ) (byte*) print_line_cursor#42 ← phi( @40/(byte*) print_line_cursor#8 ) (byte*) print_line_cursor#21 ← (byte*) print_line_cursor#42 - (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#127 + (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#129 to:@end @end: scope:[] from @41 @@ -2165,6 +2176,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#2 (byte) print_char::ch#3 (byte) print_char::ch#4 +(byte) print_char::ch#5 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -2252,6 +2264,9 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#173 (byte*) print_char_cursor#174 (byte*) print_char_cursor#175 +(byte*) print_char_cursor#176 +(byte*) print_char_cursor#177 +(byte*) print_char_cursor#178 (byte*) print_char_cursor#18 (byte*) print_char_cursor#19 (byte*) print_char_cursor#2 @@ -2533,13 +2548,14 @@ SYMBOL TABLE SSA (byte*) print_str::str#9 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -2549,6 +2565,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#4 (signed word) print_sword::w#5 (signed word) print_sword::w#6 +(signed word) print_sword::w#7 +(signed word) print_sword::w#8 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -2632,7 +2650,7 @@ Adding number conversion cast (unumber) 0 in (byte) mul16s_compare::ok#2 ← (nu Adding number conversion cast (unumber) 2 in *((byte*) BGCOL#0) ← (number) 2 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#4 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#5 Inlining cast (dword~) print_sdword::$2 ← (dword)(signed dword) print_sdword::dw#5 Inlining cast (dword) mul16u::res#0 ← (unumber)(number) 0 Inlining cast (word~) mul16s::$0 ← (word)(signed word) mul16s::a#1 @@ -2807,55 +2825,55 @@ Inferred type updated to word in (unumber~) mul16u_compare::$4 ← (word) mul16u Inferred type updated to word in (unumber~) mul16u_compare::$5 ← (word) mul16u_compare::b#2 + (word) $ffd Inferred type updated to signed word in (snumber~) mul16s_compare::$4 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b Inferred type updated to signed word in (snumber~) mul16s_compare::$5 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd -Inversing boolean not [28] (bool~) print_sword::$1 ← (signed word) print_sword::w#3 >= (signed byte) 0 from [27] (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (signed byte) 0 -Inversing boolean not [76] (bool~) print_sdword::$1 ← (signed dword) print_sdword::dw#4 >= (signed byte) 0 from [75] (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#4 < (signed byte) 0 -Inversing boolean not [140] (bool~) mul16u::$3 ← (byte~) mul16u::$1 == (byte) 0 from [139] (bool~) mul16u::$2 ← (byte~) mul16u::$1 != (byte) 0 -Inversing boolean not [166] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (signed byte) 0 from [165] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (signed byte) 0 -Inversing boolean not [170] (bool~) mul16s::$6 ← (signed word) mul16s::b#2 >= (signed byte) 0 from [169] (bool~) mul16s::$5 ← (signed word) mul16s::b#2 < (signed byte) 0 -Inversing boolean not [206] (bool~) mulf_init::$9 ← (byte~) mulf_init::$7 != (byte) 0 from [205] (bool~) mulf_init::$8 ← (byte~) mulf_init::$7 == (byte) 0 -Inversing boolean not [235] (bool~) mulf_init::$17 ← (byte) mulf_init::x_255#1 != (byte) 0 from [234] (bool~) mulf_init::$16 ← (byte) mulf_init::x_255#1 == (byte) 0 -Inversing boolean not [273] (bool~) mulf16s::$4 ← (signed word) mulf16s::a#2 >= (signed byte) 0 from [272] (bool~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (signed byte) 0 -Inversing boolean not [277] (bool~) mulf16s::$6 ← (signed word) mulf16s::b#2 >= (signed byte) 0 from [276] (bool~) mulf16s::$5 ← (signed word) mulf16s::b#2 < (signed byte) 0 -Inversing boolean not [322] (bool~) muls16u::$1 ← (word) muls16u::a#1 == (byte) 0 from [321] (bool~) muls16u::$0 ← (word) muls16u::a#1 != (byte) 0 -Inversing boolean not [345] (bool~) muls16s::$2 ← (signed word) muls16s::a#2 <= (signed byte) 0 from [344] (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (signed byte) 0 -Inversing boolean not [404] (bool~) mul16u_compare::$10 ← (dword) mul16u_compare::ms#1 == (dword) mul16u_compare::mf#0 from [403] (bool~) mul16u_compare::$9 ← (dword) mul16u_compare::ms#1 != (dword) mul16u_compare::mf#0 -Inversing boolean not [408] (bool~) mul16u_compare::$12 ← (dword) mul16u_compare::ms#2 == (dword) mul16u_compare::mn#1 from [407] (bool~) mul16u_compare::$11 ← (dword) mul16u_compare::ms#2 != (dword) mul16u_compare::mn#1 -Inversing boolean not [414] (bool~) mul16u_compare::$14 ← (byte) mul16u_compare::ok#3 != (byte) 0 from [413] (bool~) mul16u_compare::$13 ← (byte) mul16u_compare::ok#3 == (byte) 0 -Inversing boolean not [541] (bool~) mul16s_compare::$10 ← (signed dword) mul16s_compare::ms#1 == (signed dword) mul16s_compare::mf#0 from [540] (bool~) mul16s_compare::$9 ← (signed dword) mul16s_compare::ms#1 != (signed dword) mul16s_compare::mf#0 -Inversing boolean not [545] (bool~) mul16s_compare::$12 ← (signed dword) mul16s_compare::ms#2 == (signed dword) mul16s_compare::mn#1 from [544] (bool~) mul16s_compare::$11 ← (signed dword) mul16s_compare::ms#2 != (signed dword) mul16s_compare::mn#1 -Inversing boolean not [551] (bool~) mul16s_compare::$14 ← (byte) mul16s_compare::ok#3 != (byte) 0 from [550] (bool~) mul16s_compare::$13 ← (byte) mul16s_compare::ok#3 == (byte) 0 +Inversing boolean not [80] (bool~) print_sdword::$1 ← (signed dword) print_sdword::dw#4 >= (signed byte) 0 from [79] (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#4 < (signed byte) 0 +Inversing boolean not [144] (bool~) mul16u::$3 ← (byte~) mul16u::$1 == (byte) 0 from [143] (bool~) mul16u::$2 ← (byte~) mul16u::$1 != (byte) 0 +Inversing boolean not [170] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (signed byte) 0 from [169] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (signed byte) 0 +Inversing boolean not [174] (bool~) mul16s::$6 ← (signed word) mul16s::b#2 >= (signed byte) 0 from [173] (bool~) mul16s::$5 ← (signed word) mul16s::b#2 < (signed byte) 0 +Inversing boolean not [210] (bool~) mulf_init::$9 ← (byte~) mulf_init::$7 != (byte) 0 from [209] (bool~) mulf_init::$8 ← (byte~) mulf_init::$7 == (byte) 0 +Inversing boolean not [239] (bool~) mulf_init::$17 ← (byte) mulf_init::x_255#1 != (byte) 0 from [238] (bool~) mulf_init::$16 ← (byte) mulf_init::x_255#1 == (byte) 0 +Inversing boolean not [277] (bool~) mulf16s::$4 ← (signed word) mulf16s::a#2 >= (signed byte) 0 from [276] (bool~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (signed byte) 0 +Inversing boolean not [281] (bool~) mulf16s::$6 ← (signed word) mulf16s::b#2 >= (signed byte) 0 from [280] (bool~) mulf16s::$5 ← (signed word) mulf16s::b#2 < (signed byte) 0 +Inversing boolean not [326] (bool~) muls16u::$1 ← (word) muls16u::a#1 == (byte) 0 from [325] (bool~) muls16u::$0 ← (word) muls16u::a#1 != (byte) 0 +Inversing boolean not [349] (bool~) muls16s::$2 ← (signed word) muls16s::a#2 <= (signed byte) 0 from [348] (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (signed byte) 0 +Inversing boolean not [408] (bool~) mul16u_compare::$10 ← (dword) mul16u_compare::ms#1 == (dword) mul16u_compare::mf#0 from [407] (bool~) mul16u_compare::$9 ← (dword) mul16u_compare::ms#1 != (dword) mul16u_compare::mf#0 +Inversing boolean not [412] (bool~) mul16u_compare::$12 ← (dword) mul16u_compare::ms#2 == (dword) mul16u_compare::mn#1 from [411] (bool~) mul16u_compare::$11 ← (dword) mul16u_compare::ms#2 != (dword) mul16u_compare::mn#1 +Inversing boolean not [418] (bool~) mul16u_compare::$14 ← (byte) mul16u_compare::ok#3 != (byte) 0 from [417] (bool~) mul16u_compare::$13 ← (byte) mul16u_compare::ok#3 == (byte) 0 +Inversing boolean not [545] (bool~) mul16s_compare::$10 ← (signed dword) mul16s_compare::ms#1 == (signed dword) mul16s_compare::mf#0 from [544] (bool~) mul16s_compare::$9 ← (signed dword) mul16s_compare::ms#1 != (signed dword) mul16s_compare::mf#0 +Inversing boolean not [549] (bool~) mul16s_compare::$12 ← (signed dword) mul16s_compare::ms#2 == (signed dword) mul16s_compare::mn#1 from [548] (bool~) mul16s_compare::$11 ← (signed dword) mul16s_compare::ms#2 != (signed dword) mul16s_compare::mn#1 +Inversing boolean not [555] (bool~) mul16s_compare::$14 ← (byte) mul16s_compare::ok#3 != (byte) 0 from [554] (bool~) mul16s_compare::$13 ← (byte) mul16s_compare::ok#3 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#71 (byte*) print_char_cursor#165 (byte*) print_screen#8 (byte*) print_line_cursor#62 (byte*) print_char_cursor#158 (byte*) print_screen#7 (byte*) print_line_cursor#61 (byte*) print_char_cursor#157 (byte*) print_screen#6 (byte*) print_line_cursor#54 (byte*) print_char_cursor#147 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#71 (byte*) print_char_cursor#168 (byte*) print_screen#8 (byte*) print_line_cursor#62 (byte*) print_char_cursor#161 (byte*) print_screen#7 (byte*) print_line_cursor#61 (byte*) print_char_cursor#160 (byte*) print_screen#6 (byte*) print_line_cursor#54 (byte*) print_char_cursor#150 (byte*) print_screen#5 Alias (byte*) print_str::str#15 = (byte*) print_str::str#16 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#66 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#23 (byte*) print_char_cursor#3 (byte*) print_line_cursor#24 (byte*) print_char_cursor#68 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#69 (byte*) print_char_cursor#71 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#149 -Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#5 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#70 +Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#66 (byte*) print_char_cursor#67 (byte*) print_char_cursor#2 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#23 (byte*) print_char_cursor#3 (byte*) print_line_cursor#24 (byte*) print_char_cursor#69 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 (byte*) print_char_cursor#133 +Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#4 (signed word) print_sword::w#8 (signed word) print_sword::w#7 +Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#70 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 +Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#71 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#73 (byte*) print_char_cursor#8 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 Alias (word) print_word::w#5 = (word) print_word::w#6 -Alias (byte*) print_char_cursor#72 = (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#9 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#73 (byte*) print_char_cursor#74 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#11 Alias (word) print_word::w#1 = (word~) print_dword::$0 Alias (dword) print_dword::dw#4 = (dword) print_dword::dw#5 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#75 +Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#77 Alias (word) print_word::w#2 = (word~) print_dword::$2 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#13 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#14 Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$2 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#78 (byte*) print_char_cursor#80 (byte*) print_char_cursor#16 -Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#150 +Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#80 (byte*) print_char_cursor#82 (byte*) print_char_cursor#17 +Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#153 Alias (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#7 (signed dword) print_sdword::dw#6 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#79 +Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#81 Alias (signed dword) print_sdword::dw#0 = (signed dword~) print_sdword::$5 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#81 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#19 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#21 -Alias (byte*) print_line_cursor#25 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#22 (byte*) print_char_cursor#86 (byte*) print_line_cursor#4 (byte*) print_char_cursor#23 +Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#83 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#20 +Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#87 (byte*) print_char_cursor#22 +Alias (byte*) print_line_cursor#25 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#23 (byte*) print_char_cursor#88 (byte*) print_line_cursor#4 (byte*) print_char_cursor#24 Alias (dword) mul16u::mb#0 = (word) mul16u::b#2 Alias (word) mul16u::a#3 = (word) mul16u::a#4 (word) mul16u::a#7 Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 @@ -2899,10 +2917,10 @@ Alias (dword) mulf16s::m#5 = (dword) mulf16s::m#6 Alias (signed word) mulf16s::a#3 = (signed word) mulf16s::a#4 Alias (word~) mulf16s::$17 = (word~) mulf16s::$15 Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#45 -Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#24 (byte*) print_char_cursor#87 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#88 +Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#25 (byte*) print_char_cursor#89 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#90 Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#27 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#91 (byte*) print_char_cursor#92 (byte*) print_char_cursor#28 Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#7 (byte*) print_line_cursor#29 (byte*) print_line_cursor#8 Alias (dword) muls16u::return#0 = (dword) muls16u::m#2 (dword) muls16u::return#3 (dword) muls16u::return#1 Alias (dword) muls16u::m#0 = (dword) muls16u::m#4 @@ -2919,13 +2937,13 @@ Alias (word) mul16u_compare::a#6 = (word) mul16u_compare::a#9 Alias (word) mul16u_compare::b#6 = (word) mul16u_compare::b#9 Alias (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#13 Alias (byte*) print_line_cursor#90 = (byte*) print_line_cursor#94 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#91 +Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#93 Alias (word) mul16u_compare::a#1 = (word~) mul16u_compare::$4 (word) mul16u_compare::a#3 (word) mul16u_compare::a#4 (word) mul16u_compare::a#13 (word) mul16u_compare::a#14 Alias (word) mul16u_compare::b#1 = (word~) mul16u_compare::$5 (word) mul16u_compare::b#3 (word) mul16u_compare::b#4 (word) mul16u_compare::b#13 (word) mul16u_compare::b#14 Alias (dword) muls16u::return#2 = (dword) muls16u::return#4 Alias (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#9 (byte) mul16u_compare::j#8 (byte) mul16u_compare::j#6 (byte) mul16u_compare::j#7 Alias (byte) mul16u_compare::i#10 = (byte) mul16u_compare::i#11 (byte) mul16u_compare::i#9 (byte) mul16u_compare::i#7 (byte) mul16u_compare::i#8 -Alias (byte*) print_char_cursor#166 = (byte*) print_char_cursor#172 (byte*) print_char_cursor#174 (byte*) print_char_cursor#170 (byte*) print_char_cursor#167 +Alias (byte*) print_char_cursor#169 = (byte*) print_char_cursor#175 (byte*) print_char_cursor#177 (byte*) print_char_cursor#173 (byte*) print_char_cursor#170 Alias (byte*) print_line_cursor#72 = (byte*) print_line_cursor#82 (byte*) print_line_cursor#86 (byte*) print_line_cursor#78 (byte*) print_line_cursor#73 Alias (dword) mul16u_compare::ms#0 = (dword~) mul16u_compare::$6 (dword) mul16u_compare::ms#4 (dword) mul16u_compare::ms#1 (dword) mul16u_compare::ms#5 Alias (dword) mul16u::return#3 = (dword) mul16u::return#6 @@ -2939,55 +2957,55 @@ Alias (dword) mul16u_compare::ms#2 = (dword) mul16u_compare::ms#7 Alias (dword) mul16u_compare::mn#1 = (dword) mul16u_compare::mn#6 Alias (dword) mul16u_compare::mf#3 = (dword) mul16u_compare::mf#4 Alias (byte) mul16u_compare::i#5 = (byte) mul16u_compare::i#6 -Alias (byte*) print_char_cursor#159 = (byte*) print_char_cursor#160 +Alias (byte*) print_char_cursor#162 = (byte*) print_char_cursor#163 Alias (byte*) print_line_cursor#63 = (byte*) print_line_cursor#64 Alias (byte) mul16u_compare::j#2 = (byte) mul16u_compare::j#3 Alias (word) mul16u_compare::a#12 = (word) mul16u_compare::a#7 (word) mul16u_compare::a#8 (word) mul16u_compare::a#5 Alias (word) mul16u_compare::b#12 = (word) mul16u_compare::b#7 (word) mul16u_compare::b#8 (word) mul16u_compare::b#5 Alias (byte) mul16u_compare::i#2 = (byte) mul16u_compare::i#3 (byte) mul16u_compare::i#4 -Alias (byte*) print_char_cursor#140 = (byte*) print_char_cursor#161 (byte*) print_char_cursor#153 (byte*) print_char_cursor#152 (byte*) print_char_cursor#141 +Alias (byte*) print_char_cursor#143 = (byte*) print_char_cursor#164 (byte*) print_char_cursor#156 (byte*) print_char_cursor#155 (byte*) print_char_cursor#144 Alias (byte*) print_line_cursor#46 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#55 (byte*) print_line_cursor#56 (byte*) print_line_cursor#47 Alias (dword) mul16u_compare::ms#3 = (dword) mul16u_compare::ms#6 Alias (dword) mul16u_compare::mn#2 = (dword) mul16u_compare::mn#5 Alias (dword) mul16u_compare::mf#1 = (dword) mul16u_compare::mf#2 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#92 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#94 Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#93 +Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#95 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#31 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#48 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#94 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#95 +Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#96 +Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#97 Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#33 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#96 +Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#98 Alias (word) mul16u_error::a#1 = (word) mul16u_error::a#2 Alias (word) mul16u_error::b#1 = (word) mul16u_error::b#3 (word) mul16u_error::b#4 (word) mul16u_error::b#2 Alias (dword) mul16u_error::ms#1 = (dword) mul16u_error::ms#5 (dword) mul16u_error::ms#6 (dword) mul16u_error::ms#4 (dword) mul16u_error::ms#3 (dword) mul16u_error::ms#2 Alias (dword) mul16u_error::mn#1 = (dword) mul16u_error::mn#7 (dword) mul16u_error::mn#8 (dword) mul16u_error::mn#6 (dword) mul16u_error::mn#5 (dword) mul16u_error::mn#4 (dword) mul16u_error::mn#3 (dword) mul16u_error::mn#2 Alias (dword) mul16u_error::mf#1 = (dword) mul16u_error::mf#9 (dword) mul16u_error::mf#10 (dword) mul16u_error::mf#8 (dword) mul16u_error::mf#7 (dword) mul16u_error::mf#6 (dword) mul16u_error::mf#5 (dword) mul16u_error::mf#4 (dword) mul16u_error::mf#3 (dword) mul16u_error::mf#2 Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#99 (byte*) print_line_cursor#95 (byte*) print_line_cursor#91 (byte*) print_line_cursor#87 (byte*) print_line_cursor#83 (byte*) print_line_cursor#79 (byte*) print_line_cursor#74 (byte*) print_line_cursor#66 (byte*) print_line_cursor#57 (byte*) print_line_cursor#49 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#97 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#98 -Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#99 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#37 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#41 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#43 +Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#99 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#37 +Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#38 +Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#40 +Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#41 +Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#42 +Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#43 +Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#44 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#44 (byte*) print_char_cursor#108 (byte*) print_char_cursor#45 +Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#110 (byte*) print_char_cursor#46 Alias (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#9 Alias (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#9 Alias (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#13 Alias (byte*) print_line_cursor#92 = (byte*) print_line_cursor#96 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#46 +Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#47 Alias (signed word) mul16s_compare::a#1 = (signed word~) mul16s_compare::$4 (signed word) mul16s_compare::a#3 (signed word) mul16s_compare::a#4 (signed word) mul16s_compare::a#13 (signed word) mul16s_compare::a#14 Alias (signed word) mul16s_compare::b#1 = (signed word~) mul16s_compare::$5 (signed word) mul16s_compare::b#3 (signed word) mul16s_compare::b#4 (signed word) mul16s_compare::b#13 (signed word) mul16s_compare::b#14 Alias (signed dword) muls16s::return#2 = (signed dword) muls16s::return#4 Alias (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#9 (byte) mul16s_compare::j#8 (byte) mul16s_compare::j#6 (byte) mul16s_compare::j#7 Alias (byte) mul16s_compare::i#10 = (byte) mul16s_compare::i#11 (byte) mul16s_compare::i#9 (byte) mul16s_compare::i#7 (byte) mul16s_compare::i#8 -Alias (byte*) print_char_cursor#168 = (byte*) print_char_cursor#173 (byte*) print_char_cursor#175 (byte*) print_char_cursor#171 (byte*) print_char_cursor#169 +Alias (byte*) print_char_cursor#171 = (byte*) print_char_cursor#176 (byte*) print_char_cursor#178 (byte*) print_char_cursor#174 (byte*) print_char_cursor#172 Alias (byte*) print_line_cursor#75 = (byte*) print_line_cursor#84 (byte*) print_line_cursor#88 (byte*) print_line_cursor#80 (byte*) print_line_cursor#76 Alias (signed dword) mul16s_compare::ms#0 = (signed dword~) mul16s_compare::$6 (signed dword) mul16s_compare::ms#4 (signed dword) mul16s_compare::ms#1 (signed dword) mul16s_compare::ms#5 Alias (signed dword) mul16s::return#2 = (signed dword) mul16s::return#4 @@ -3001,46 +3019,46 @@ Alias (signed dword) mul16s_compare::ms#2 = (signed dword) mul16s_compare::ms#7 Alias (signed dword) mul16s_compare::mn#1 = (signed dword) mul16s_compare::mn#6 Alias (signed dword) mul16s_compare::mf#3 = (signed dword) mul16s_compare::mf#4 Alias (byte) mul16s_compare::i#5 = (byte) mul16s_compare::i#6 -Alias (byte*) print_char_cursor#162 = (byte*) print_char_cursor#163 +Alias (byte*) print_char_cursor#165 = (byte*) print_char_cursor#166 Alias (byte*) print_line_cursor#67 = (byte*) print_line_cursor#68 Alias (byte) mul16s_compare::j#2 = (byte) mul16s_compare::j#3 Alias (signed word) mul16s_compare::a#12 = (signed word) mul16s_compare::a#7 (signed word) mul16s_compare::a#8 (signed word) mul16s_compare::a#5 Alias (signed word) mul16s_compare::b#12 = (signed word) mul16s_compare::b#7 (signed word) mul16s_compare::b#8 (signed word) mul16s_compare::b#5 Alias (byte) mul16s_compare::i#2 = (byte) mul16s_compare::i#3 (byte) mul16s_compare::i#4 -Alias (byte*) print_char_cursor#144 = (byte*) print_char_cursor#164 (byte*) print_char_cursor#156 (byte*) print_char_cursor#155 (byte*) print_char_cursor#145 +Alias (byte*) print_char_cursor#147 = (byte*) print_char_cursor#167 (byte*) print_char_cursor#159 (byte*) print_char_cursor#158 (byte*) print_char_cursor#148 Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#69 (byte*) print_line_cursor#58 (byte*) print_line_cursor#59 (byte*) print_line_cursor#51 Alias (signed dword) mul16s_compare::ms#3 = (signed dword) mul16s_compare::ms#6 Alias (signed dword) mul16s_compare::mn#2 = (signed dword) mul16s_compare::mn#5 Alias (signed dword) mul16s_compare::mf#1 = (signed dword) mul16s_compare::mf#2 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#47 +Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#48 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#36 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#48 +Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#49 Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#37 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#38 (byte*) print_line_cursor#52 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#49 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#50 +Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#50 +Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#51 Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#39 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#51 +Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#52 Alias (signed word) mul16s_error::a#1 = (signed word) mul16s_error::a#2 Alias (signed word) mul16s_error::b#1 = (signed word) mul16s_error::b#3 (signed word) mul16s_error::b#4 (signed word) mul16s_error::b#2 Alias (signed dword) mul16s_error::ms#1 = (signed dword) mul16s_error::ms#5 (signed dword) mul16s_error::ms#6 (signed dword) mul16s_error::ms#4 (signed dword) mul16s_error::ms#3 (signed dword) mul16s_error::ms#2 Alias (signed dword) mul16s_error::mn#1 = (signed dword) mul16s_error::mn#7 (signed dword) mul16s_error::mn#8 (signed dword) mul16s_error::mn#6 (signed dword) mul16s_error::mn#5 (signed dword) mul16s_error::mn#4 (signed dword) mul16s_error::mn#3 (signed dword) mul16s_error::mn#2 Alias (signed dword) mul16s_error::mf#1 = (signed dword) mul16s_error::mf#9 (signed dword) mul16s_error::mf#10 (signed dword) mul16s_error::mf#8 (signed dword) mul16s_error::mf#7 (signed dword) mul16s_error::mf#6 (signed dword) mul16s_error::mf#5 (signed dword) mul16s_error::mf#4 (signed dword) mul16s_error::mf#3 (signed dword) mul16s_error::mf#2 Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#103 (byte*) print_line_cursor#97 (byte*) print_line_cursor#93 (byte*) print_line_cursor#89 (byte*) print_line_cursor#85 (byte*) print_line_cursor#81 (byte*) print_line_cursor#77 (byte*) print_line_cursor#70 (byte*) print_line_cursor#60 (byte*) print_line_cursor#53 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#58 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#61 +Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#53 +Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#54 +Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#55 +Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#56 +Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#57 +Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#58 +Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#59 +Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#60 +Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#61 +Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#62 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#40 (byte*) print_line_cursor#41 (byte*) print_line_cursor#20 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#62 (byte*) print_char_cursor#126 (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#63 (byte*) print_char_cursor#128 (byte*) print_char_cursor#64 Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#42 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#64 +Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#65 Successful SSA optimization Pass2AliasElimination Alias (word) mul16u::a#3 = (word) mul16u::a#5 Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 @@ -3061,7 +3079,7 @@ Alias (word) mul16u_compare::a#1 = (word) mul16u_compare::a#10 (word) mul16u_com Alias (word) mul16u_compare::b#1 = (word) mul16u_compare::b#10 (word) mul16u_compare::b#12 Alias (dword) mul16u_compare::mf#0 = (dword) mul16u_compare::mf#3 (dword) mul16u_compare::mf#1 Alias (byte) mul16u_compare::i#10 = (byte) mul16u_compare::i#5 (byte) mul16u_compare::i#2 -Alias (byte*) print_char_cursor#140 = (byte*) print_char_cursor#159 (byte*) print_char_cursor#166 +Alias (byte*) print_char_cursor#143 = (byte*) print_char_cursor#162 (byte*) print_char_cursor#169 Alias (byte*) print_line_cursor#46 = (byte*) print_line_cursor#63 (byte*) print_line_cursor#72 Alias (signed dword) mul16s_compare::ms#0 = (signed dword) mul16s_compare::ms#2 (signed dword) mul16s_compare::ms#3 Alias (signed dword) mul16s_compare::mn#0 = (signed dword) mul16s_compare::mn#1 (signed dword) mul16s_compare::mn#2 @@ -3070,10 +3088,10 @@ Alias (signed word) mul16s_compare::a#1 = (signed word) mul16s_compare::a#10 (si Alias (signed word) mul16s_compare::b#1 = (signed word) mul16s_compare::b#10 (signed word) mul16s_compare::b#12 Alias (signed dword) mul16s_compare::mf#0 = (signed dword) mul16s_compare::mf#3 (signed dword) mul16s_compare::mf#1 Alias (byte) mul16s_compare::i#10 = (byte) mul16s_compare::i#5 (byte) mul16s_compare::i#2 -Alias (byte*) print_char_cursor#144 = (byte*) print_char_cursor#162 (byte*) print_char_cursor#168 +Alias (byte*) print_char_cursor#147 = (byte*) print_char_cursor#165 (byte*) print_char_cursor#171 Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#67 (byte*) print_line_cursor#75 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#67 +Self Phi Eliminated (byte*) print_char_cursor#68 Self Phi Eliminated (byte*) print_line_cursor#25 Self Phi Eliminated (word) muls16u::b#1 Self Phi Eliminated (word) muls16u::a#2 @@ -3082,23 +3100,24 @@ Self Phi Eliminated (signed word) muls16s::a#3 Self Phi Eliminated (signed word) muls16s::b#2 Self Phi Eliminated (signed word) muls16s::a#4 Self Phi Eliminated (byte) mul16u_compare::i#10 -Self Phi Eliminated (byte*) print_char_cursor#140 +Self Phi Eliminated (byte*) print_char_cursor#143 Self Phi Eliminated (byte*) print_line_cursor#46 Self Phi Eliminated (byte) mul16s_compare::i#10 -Self Phi Eliminated (byte*) print_char_cursor#144 +Self Phi Eliminated (byte*) print_char_cursor#147 Self Phi Eliminated (byte*) print_line_cursor#50 Successful SSA optimization Pass2SelfPhiElimination -Identical Phi Values (byte*) print_char_cursor#67 (byte*) print_char_cursor#129 -Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#20 -Identical Phi Values (byte*) print_char_cursor#72 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#10 +Identical Phi Values (byte*) print_char_cursor#68 (byte*) print_char_cursor#131 +Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#10 +Identical Phi Values (byte*) print_char_cursor#74 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#19 Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#20 -Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#20 -Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#20 +Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#10 +Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#21 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_screen#1 Identical Phi Values (signed word) mul16s::a#1 (signed word) mul16s::a#0 @@ -3107,12 +3126,12 @@ Identical Phi Values (signed word) mulf16s::a#1 (signed word) mulf16s::a#0 Identical Phi Values (signed word) mulf16s::b#1 (signed word) mulf16s::b#0 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#44 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#137 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#140 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#25 -Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_line_cursor#25 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#30 +Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_line_cursor#25 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#31 Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#10 -Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#111 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#113 Identical Phi Values (byte*) print_line_cursor#28 (byte*) print_line_cursor#16 Identical Phi Values (word) muls16u::a#1 (word) muls16u::a#0 Identical Phi Values (word) muls16u::b#2 (word) muls16u::b#0 @@ -3124,120 +3143,122 @@ Identical Phi Values (signed word) muls16s::b#1 (signed word) muls16s::b#3 Identical Phi Values (signed word) muls16s::a#3 (signed word) muls16s::a#1 Identical Phi Values (signed word) muls16s::b#2 (signed word) muls16s::b#3 Identical Phi Values (signed word) muls16s::a#4 (signed word) muls16s::a#1 -Identical Phi Values (byte*) print_char_cursor#151 (byte*) print_char_cursor#138 +Identical Phi Values (byte*) print_char_cursor#154 (byte*) print_char_cursor#141 Identical Phi Values (byte*) print_line_cursor#98 (byte*) print_line_cursor#26 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#128 +Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#130 Identical Phi Values (byte) mul16u_compare::i#10 (byte) mul16u_compare::i#12 -Identical Phi Values (byte*) print_char_cursor#140 (byte*) print_char_cursor#28 +Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_char_cursor#29 Identical Phi Values (byte*) print_line_cursor#46 (byte*) print_line_cursor#90 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#107 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#109 Identical Phi Values (byte*) print_line_cursor#30 (byte*) print_line_cursor#13 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#128 +Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#130 Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#142 (byte*) print_char_cursor#140 +Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#145 (byte*) print_char_cursor#143 Identical Phi Values (word) mul16u_error::a#1 (word) mul16u_error::a#0 Identical Phi Values (word) mul16u_error::b#1 (word) mul16u_error::b#0 Identical Phi Values (dword) mul16u_error::ms#1 (dword) mul16u_error::ms#0 Identical Phi Values (dword) mul16u_error::mn#1 (dword) mul16u_error::mn#0 Identical Phi Values (dword) mul16u_error::mf#1 (dword) mul16u_error::mf#0 Identical Phi Values (byte*) print_line_cursor#102 (byte*) print_line_cursor#46 -Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#36 (byte*) print_char_cursor#128 +Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_char_cursor#130 Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#10 +Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#13 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#154 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#157 (byte*) print_char_cursor#26 Identical Phi Values (byte*) print_line_cursor#100 (byte*) print_line_cursor#27 -Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#128 +Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#130 Identical Phi Values (byte) mul16s_compare::i#10 (byte) mul16s_compare::i#12 -Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_char_cursor#109 +Identical Phi Values (byte*) print_char_cursor#147 (byte*) print_char_cursor#111 Identical Phi Values (byte*) print_line_cursor#50 (byte*) print_line_cursor#92 -Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#125 +Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#127 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#19 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#144 +Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#149 (byte*) print_char_cursor#147 Identical Phi Values (signed word) mul16s_error::a#1 (signed word) mul16s_error::a#0 Identical Phi Values (signed word) mul16s_error::b#1 (signed word) mul16s_error::b#0 Identical Phi Values (signed dword) mul16s_error::ms#1 (signed dword) mul16s_error::ms#0 Identical Phi Values (signed dword) mul16s_error::mn#1 (signed dword) mul16s_error::mn#0 Identical Phi Values (signed dword) mul16s_error::mf#1 (signed dword) mul16s_error::mf#0 Identical Phi Values (byte*) print_line_cursor#101 (byte*) print_line_cursor#50 -Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#14 -Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#14 -Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#15 +Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#15 +Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#15 Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#21 (byte*) print_line_cursor#28 -Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#27 Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#135 (byte*) print_char_cursor#128 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#132 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#134 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [29] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_sdword::$1 [77] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 -Simple Condition (bool~) print_cls::$1 [123] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) mul16u::$0 [136] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -Simple Condition (bool~) mul16u::$3 [141] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@4 -Simple Condition (bool~) mul16s::$4 [167] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -Simple Condition (bool~) mul16s::$6 [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -Simple Condition (bool~) mulf_init::$9 [207] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -Simple Condition (bool~) mulf_init::$14 [219] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$13) goto mulf_init::@1 -Simple Condition (bool~) mulf_init::$17 [236] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@6 -Simple Condition (bool~) mulf_init::$19 [241] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$18) goto mulf_init::@5 -Simple Condition (bool~) mulf16s::$4 [274] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -Simple Condition (bool~) mulf16s::$6 [278] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -Simple Condition (bool~) muls16u::$1 [323] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -Simple Condition (bool~) muls16u::$3 [333] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@4 -Simple Condition (bool~) muls16s::$0 [340] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@1 -Simple Condition (bool~) muls16s::$2 [346] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@3 -Simple Condition (bool~) muls16s::$4 [354] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@8 -Simple Condition (bool~) muls16s::$6 [362] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@10 -Simple Condition (bool~) mul16u_compare::$10 [405] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -Simple Condition (bool~) mul16u_compare::$12 [409] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@4 -Simple Condition (bool~) mul16u_compare::$14 [415] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -Simple Condition (bool~) mul16u_compare::$16 [421] if((byte) mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 -Simple Condition (bool~) mul16u_compare::$17 [440] if((byte) mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 -Simple Condition (bool~) mul16s_compare::$10 [542] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -Simple Condition (bool~) mul16s_compare::$12 [546] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@4 -Simple Condition (bool~) mul16s_compare::$14 [552] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5 -Simple Condition (bool~) mul16s_compare::$16 [558] if((byte) mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 -Simple Condition (bool~) mul16s_compare::$17 [577] if((byte) mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 +Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [28] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_sdword::$1 [81] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 +Simple Condition (bool~) print_cls::$1 [127] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) mul16u::$0 [140] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 +Simple Condition (bool~) mul16u::$3 [145] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@4 +Simple Condition (bool~) mul16s::$4 [171] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 +Simple Condition (bool~) mul16s::$6 [175] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 +Simple Condition (bool~) mulf_init::$9 [211] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 +Simple Condition (bool~) mulf_init::$14 [223] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$13) goto mulf_init::@1 +Simple Condition (bool~) mulf_init::$17 [240] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@6 +Simple Condition (bool~) mulf_init::$19 [245] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$18) goto mulf_init::@5 +Simple Condition (bool~) mulf16s::$4 [278] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 +Simple Condition (bool~) mulf16s::$6 [282] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 +Simple Condition (bool~) muls16u::$1 [327] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 +Simple Condition (bool~) muls16u::$3 [337] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@4 +Simple Condition (bool~) muls16s::$0 [344] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@1 +Simple Condition (bool~) muls16s::$2 [350] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@3 +Simple Condition (bool~) muls16s::$4 [358] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@8 +Simple Condition (bool~) muls16s::$6 [366] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@10 +Simple Condition (bool~) mul16u_compare::$10 [409] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 +Simple Condition (bool~) mul16u_compare::$12 [413] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@4 +Simple Condition (bool~) mul16u_compare::$14 [419] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 +Simple Condition (bool~) mul16u_compare::$16 [425] if((byte) mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 +Simple Condition (bool~) mul16u_compare::$17 [444] if((byte) mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 +Simple Condition (bool~) mul16s_compare::$10 [546] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 +Simple Condition (bool~) mul16s_compare::$12 [550] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@4 +Simple Condition (bool~) mul16s_compare::$14 [556] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5 +Simple Condition (bool~) mul16s_compare::$16 [562] if((byte) mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 +Simple Condition (bool~) mul16s_compare::$17 [581] if((byte) mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [191] (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } -Constant right-side identified [192] (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } -Constant right-side identified [193] (byte[$200]) mulf_sqr2_lo#0 ← { fill( $200, 0) } -Constant right-side identified [194] (byte[$200]) mulf_sqr2_hi#0 ← { fill( $200, 0) } +Constant right-side identified [195] (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } +Constant right-side identified [196] (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } +Constant right-side identified [197] (byte[$200]) mulf_sqr2_lo#0 ← { fill( $200, 0) } +Constant right-side identified [198] (byte[$200]) mulf_sqr2_hi#0 ← { fill( $200, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const byte) print_char::ch#1 = '-' +Constant (const byte) print_char::ch#1 = ' ' +Constant (const byte) print_char::ch#2 = '-' Constant (const byte[]) print_hextab#0 = $0 Constant (const dword) mul16u::res#0 = 0 Constant (const byte[$200]) mulf_sqr1_lo#0 = { fill( $200, 0) } @@ -3293,14 +3314,14 @@ Constant (const byte*) mulf_init::sqr2_hi#0 = mulf_sqr2_hi#0 Constant (const byte*) mulf_init::sqr2_lo#0 = mulf_sqr2_lo#0 Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantStringConsolidation -Resolved ranged next value [419] mul16u_compare::j#1 ← ++ mul16u_compare::j#10 to ++ -Resolved ranged comparison value [421] if(mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 to (number) $10 -Resolved ranged next value [438] mul16u_compare::i#1 ← ++ mul16u_compare::i#12 to ++ -Resolved ranged comparison value [440] if(mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 to (number) $10 -Resolved ranged next value [556] mul16s_compare::j#1 ← ++ mul16s_compare::j#10 to ++ -Resolved ranged comparison value [558] if(mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 to (number) $10 -Resolved ranged next value [575] mul16s_compare::i#1 ← ++ mul16s_compare::i#12 to ++ -Resolved ranged comparison value [577] if(mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 to (number) $10 +Resolved ranged next value [423] mul16u_compare::j#1 ← ++ mul16u_compare::j#10 to ++ +Resolved ranged comparison value [425] if(mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 to (number) $10 +Resolved ranged next value [442] mul16u_compare::i#1 ← ++ mul16u_compare::i#12 to ++ +Resolved ranged comparison value [444] if(mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 to (number) $10 +Resolved ranged next value [560] mul16s_compare::j#1 ← ++ mul16s_compare::j#10 to ++ +Resolved ranged comparison value [562] if(mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 to (number) $10 +Resolved ranged next value [579] mul16s_compare::i#1 ← ++ mul16s_compare::i#12 to ++ +Resolved ranged comparison value [581] if(mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 to (number) $10 Adding number conversion cast (unumber) $10 in if((byte) mul16u_compare::j#1!=(number) $10) goto mul16u_compare::@2 Adding number conversion cast (unumber) $10 in if((byte) mul16u_compare::i#1!=(number) $10) goto mul16u_compare::@1 Adding number conversion cast (unumber) $10 in if((byte) mul16s_compare::j#1!=(number) $10) goto mul16s_compare::@2 @@ -3322,15 +3343,15 @@ Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte*) print_line_cursor#90 (const byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#92 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination -Constant right-side identified [55] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 -Constant right-side identified [87] (byte*) mulf_init::sqr1_hi#0 ← (const byte[$200]) mulf_sqr1_hi#0 + (byte) 1 -Constant right-side identified [88] (byte*) mulf_init::sqr1_lo#0 ← (const byte[$200]) mulf_sqr1_lo#0 + (byte) 1 -Constant right-side identified [101] (byte*~) mulf_init::$13 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $200 -Constant right-side identified [113] (byte*~) mulf_init::$18 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff -Constant right-side identified [115] (byte*~) mulf_init::$2 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff -Constant right-side identified [116] (byte*~) mulf_init::$3 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $100 -Constant right-side identified [118] (byte*~) mulf_init::$4 ← (const byte[$200]) mulf_sqr2_hi#0 + (word) $1ff -Constant right-side identified [119] (byte*~) mulf_init::$5 ← (const byte[$200]) mulf_sqr1_hi#0 + (word) $100 +Constant right-side identified [56] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [88] (byte*) mulf_init::sqr1_hi#0 ← (const byte[$200]) mulf_sqr1_hi#0 + (byte) 1 +Constant right-side identified [89] (byte*) mulf_init::sqr1_lo#0 ← (const byte[$200]) mulf_sqr1_lo#0 + (byte) 1 +Constant right-side identified [102] (byte*~) mulf_init::$13 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $200 +Constant right-side identified [114] (byte*~) mulf_init::$18 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff +Constant right-side identified [116] (byte*~) mulf_init::$2 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff +Constant right-side identified [117] (byte*~) mulf_init::$3 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $100 +Constant right-side identified [119] (byte*~) mulf_init::$4 ← (const byte[$200]) mulf_sqr2_hi#0 + (word) $1ff +Constant right-side identified [120] (byte*~) mulf_init::$5 ← (const byte[$200]) mulf_sqr1_hi#0 + (word) $100 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Constant (const byte*) mulf_init::sqr1_hi#0 = mulf_sqr1_hi#0+1 @@ -3342,10 +3363,10 @@ Constant (const byte*) mulf_init::$3 = mulf_sqr1_lo#0+$100 Constant (const byte*) mulf_init::$4 = mulf_sqr2_hi#0+$1ff Constant (const byte*) mulf_init::$5 = mulf_sqr1_hi#0+$100 Successful SSA optimization Pass2ConstantIdentification -Inlining Noop Cast [76] (word~) mul16s::$10 ← (word)(signed word) mul16s::b#0 keeping mul16s::b#0 -Inlining Noop Cast [82] (word~) mul16s::$14 ← (word)(signed word) mul16s::a#0 keeping mul16s::a#0 -Inlining Noop Cast [128] (word~) mulf16s::$10 ← (word)(signed word) mulf16s::b#0 keeping mulf16s::b#0 -Inlining Noop Cast [134] (word~) mulf16s::$14 ← (word)(signed word) mulf16s::a#0 keeping mulf16s::a#0 +Inlining Noop Cast [77] (word~) mul16s::$10 ← (word)(signed word) mul16s::b#0 keeping mul16s::b#0 +Inlining Noop Cast [83] (word~) mul16s::$14 ← (word)(signed word) mul16s::a#0 keeping mul16s::a#0 +Inlining Noop Cast [129] (word~) mulf16s::$10 ← (word)(signed word) mulf16s::b#0 keeping mulf16s::b#0 +Inlining Noop Cast [135] (word~) mulf16s::$14 ← (word)(signed word) mulf16s::a#0 keeping mulf16s::a#0 Successful SSA optimization Pass2NopCastInlining Inlining constant with var siblings (const byte*) print_str::str#1 Inlining constant with var siblings (const byte*) print_str::str#2 @@ -3363,6 +3384,7 @@ Inlining constant with var siblings (const byte*) print_str::str#13 Inlining constant with var siblings (const byte*) print_str::str#14 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#1 +Inlining constant with var siblings (const byte) print_char::ch#2 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const dword) mul16u::res#0 Inlining constant with var siblings (const word) mulf_init::sqr#0 @@ -3458,12 +3480,12 @@ Constant inlined mul16s_compare::i#0 = (byte) 0 Constant inlined mulf_init::sqr#0 = (byte) 0 Constant inlined mul16u_compare::i#0 = (byte) 0 Constant inlined print_cls::sc#0 = (byte*) 1024 -Constant inlined print_char::ch#1 = (byte) '-' +Constant inlined print_char::ch#2 = (byte) '-' +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' Constant inlined mul16u_compare::str = (const string) str Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_sdword::@5(between print_sdword and print_sdword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting mul16u::@10(between mul16u::@2 and mul16u::@4) @@ -3508,7 +3530,7 @@ Adding NOP phi() at start of print_sdword::@3 Adding NOP phi() at start of print_dword::@2 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of mul16u::@3 Adding NOP phi() at start of muls16s::@5 Adding NOP phi() at start of muls16s::@1 @@ -3533,23 +3555,23 @@ Calls in [print_sdword] to print_char:131 print_dword:139 Calls in [print_dword] to print_word:148 print_word:152 Calls in [print_word] to print_byte:159 print_byte:163 Calls in [print_byte] to print_char:171 print_char:176 -Calls in [print_sword] to print_char:186 print_word:194 +Calls in [print_sword] to print_char:186 print_word:192 print_char:196 Calls in [mulf16s] to mulf16u:203 Calls in [mul16s] to mul16u:232 Calls in [mul16u_compare] to print_str:292 muls16u:300 mul16u:307 mulf16u:314 mul16u_error:330 print_ln:338 print_str:340 print_ln:343 Calls in [mul16u_error] to print_str:354 print_word:358 print_str:360 print_word:364 print_str:366 print_dword:370 print_str:372 print_dword:376 print_str:378 print_dword:382 print_ln:384 -Created 72 initial phi equivalence classes -Not coalescing [18] print_char_cursor#218 ← print_line_cursor#1 -Coalesced [20] print_char_cursor#176 ← print_char_cursor#143 +Created 71 initial phi equivalence classes +Not coalescing [18] print_char_cursor#220 ← print_line_cursor#1 +Coalesced [20] print_char_cursor#179 ← print_char_cursor#146 Coalesced [22] mul16s_compare::a#16 ← mul16s_compare::a#6 Coalesced [23] mul16s_compare::b#16 ← mul16s_compare::b#6 Coalesced [62] print_line_cursor#104 ← print_line_cursor#1 -Coalesced [63] print_char_cursor#192 ← print_char_cursor#128 -Not coalescing [65] print_char_cursor#177 ← print_line_cursor#1 +Coalesced [63] print_char_cursor#195 ← print_char_cursor#130 +Not coalescing [65] print_char_cursor#180 ← print_line_cursor#1 Coalesced (already) [67] print_line_cursor#105 ← print_line_cursor#1 -Coalesced (already) [68] print_char_cursor#193 ← print_char_cursor#128 -Coalesced [71] print_char_cursor#219 ← print_char_cursor#128 +Coalesced (already) [68] print_char_cursor#196 ← print_char_cursor#130 +Coalesced [71] print_char_cursor#221 ← print_char_cursor#130 Coalesced [72] mul16s_compare::a#15 ← mul16s_compare::a#1 Coalesced [73] mul16s_compare::b#15 ← mul16s_compare::b#1 Coalesced [74] mul16s_compare::i#14 ← mul16s_compare::i#1 @@ -3560,47 +3582,46 @@ Coalesced [78] mul16s_compare::ok#5 ← mul16s_compare::ok#4 Coalesced [80] print_line_cursor#108 ← print_line_cursor#43 Coalesced (already) [86] print_line_cursor#109 ← print_line_cursor#1 Coalesced [88] print_str::str#18 ← print_str::str#17 -Coalesced (already) [89] print_char_cursor#190 ← print_char_cursor#148 +Coalesced (already) [89] print_char_cursor#193 ← print_char_cursor#151 Coalesced [96] print_str::str#19 ← print_str::str#0 -Coalesced [97] print_char_cursor#191 ← print_char_cursor#1 -Coalesced (already) [98] print_char_cursor#178 ← print_char_cursor#128 -Coalesced [101] print_sword::w#7 ← print_sword::w#1 -Coalesced [103] print_char_cursor#179 ← print_char_cursor#20 -Coalesced [106] print_sword::w#8 ← print_sword::w#2 -Coalesced (already) [108] print_char_cursor#180 ← print_char_cursor#20 +Coalesced [97] print_char_cursor#194 ← print_char_cursor#1 +Coalesced (already) [98] print_char_cursor#181 ← print_char_cursor#130 +Coalesced [101] print_sword::w#9 ← print_sword::w#1 +Coalesced [103] print_char_cursor#182 ← print_char_cursor#21 +Coalesced [106] print_sword::w#10 ← print_sword::w#2 +Coalesced (already) [108] print_char_cursor#183 ← print_char_cursor#21 Coalesced [111] print_sdword::dw#8 ← print_sdword::dw#1 -Coalesced (already) [113] print_char_cursor#181 ← print_char_cursor#20 +Coalesced (already) [113] print_char_cursor#184 ← print_char_cursor#21 Coalesced [116] print_sdword::dw#9 ← print_sdword::dw#2 -Coalesced (already) [118] print_char_cursor#182 ← print_char_cursor#20 +Coalesced (already) [118] print_char_cursor#185 ← print_char_cursor#21 Coalesced [121] print_sdword::dw#10 ← print_sdword::dw#3 Coalesced (already) [123] print_line_cursor#106 ← print_line_cursor#1 -Coalesced (already) [124] print_char_cursor#194 ← print_char_cursor#20 -Coalesced [130] print_char_cursor#215 ← print_char_cursor#128 +Coalesced (already) [124] print_char_cursor#197 ← print_char_cursor#21 +Coalesced [130] print_char_cursor#216 ← print_char_cursor#130 Coalesced [133] print_sdword::dw#12 ← print_sdword::dw#0 -Coalesced [134] print_char_cursor#210 ← print_char_cursor#20 +Coalesced [134] print_char_cursor#211 ← print_char_cursor#21 Coalesced [137] print_dword::dw#9 ← print_dword::dw#0 -Coalesced [138] print_char_cursor#208 ← print_char_cursor#134 +Coalesced [138] print_char_cursor#209 ← print_char_cursor#137 Coalesced [142] print_sdword::dw#11 ← print_sdword::dw#4 -Coalesced (already) [143] print_char_cursor#209 ← print_char_cursor#128 +Coalesced (already) [143] print_char_cursor#210 ← print_char_cursor#130 Coalesced [146] print_word::w#9 ← print_word::w#1 -Coalesced [147] print_char_cursor#202 ← print_char_cursor#133 +Coalesced [147] print_char_cursor#203 ← print_char_cursor#136 Coalesced [150] print_word::w#10 ← print_word::w#2 -Coalesced (already) [151] print_char_cursor#203 ← print_char_cursor#20 +Coalesced (already) [151] print_char_cursor#204 ← print_char_cursor#21 Coalesced [157] print_byte::b#4 ← print_byte::b#0 -Coalesced [158] print_char_cursor#211 ← print_char_cursor#132 +Coalesced [158] print_char_cursor#212 ← print_char_cursor#135 Coalesced [161] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [162] print_char_cursor#212 ← print_char_cursor#20 -Coalesced [169] print_char::ch#5 ← print_char::ch#2 -Coalesced (already) [170] print_char_cursor#213 ← print_char_cursor#136 -Coalesced [174] print_char::ch#6 ← print_char::ch#3 -Coalesced (already) [175] print_char_cursor#214 ← print_char_cursor#20 -Coalesced (already) [185] print_char_cursor#216 ← print_char_cursor#128 -Coalesced [188] print_sword::w#10 ← print_sword::w#0 -Coalesced [189] print_char_cursor#199 ← print_char_cursor#20 -Coalesced [192] print_word::w#11 ← print_word::w#0 -Coalesced (already) [193] print_char_cursor#204 ← print_char_cursor#130 -Coalesced [197] print_sword::w#9 ← print_sword::w#3 -Coalesced (already) [198] print_char_cursor#198 ← print_char_cursor#128 +Coalesced (already) [162] print_char_cursor#213 ← print_char_cursor#21 +Coalesced [169] print_char::ch#6 ← print_char::ch#3 +Coalesced (already) [170] print_char_cursor#214 ← print_char_cursor#139 +Coalesced [174] print_char::ch#7 ← print_char::ch#4 +Coalesced (already) [175] print_char_cursor#215 ← print_char_cursor#21 +Coalesced (already) [185] print_char_cursor#218 ← print_char_cursor#130 +Coalesced [187] print_sword::w#12 ← print_sword::w#3 +Coalesced [190] print_word::w#11 ← print_word::w#0 +Coalesced (already) [191] print_char_cursor#205 ← print_char_cursor#21 +Coalesced (already) [195] print_char_cursor#217 ← print_char_cursor#130 +Coalesced [198] print_sword::w#11 ← print_sword::w#0 Coalesced [201] mulf16u::a#4 ← mulf16u::a#0 Coalesced [202] mulf16u::b#4 ← mulf16u::b#0 Coalesced [210] mulf16s::m#7 ← mulf16s::m#1 @@ -3626,18 +3647,18 @@ Coalesced [280] muls16s::j#3 ← muls16s::j#1 Coalesced [286] muls16s::return#5 ← muls16s::m#2 Coalesced [287] muls16s::m#10 ← muls16s::m#2 Coalesced [288] muls16s::i#3 ← muls16s::i#1 -Coalesced [291] print_char_cursor#183 ← print_char_cursor#139 +Coalesced [291] print_char_cursor#186 ← print_char_cursor#142 Coalesced [293] mul16u_compare::a#16 ← mul16u_compare::a#6 Coalesced [294] mul16u_compare::b#16 ← mul16u_compare::b#6 Coalesced [305] mul16u::mb#7 ← mul16u::b#1 Coalesced [306] mul16u::a#9 ← mul16u::a#2 Coalesced [312] mulf16u::a#3 ← mulf16u::a#1 Coalesced [313] mulf16u::b#3 ← mulf16u::b#1 -Coalesced (already) [337] print_char_cursor#195 ← print_char_cursor#128 -Not coalescing [339] print_char_cursor#184 ← print_line_cursor#1 +Coalesced (already) [337] print_char_cursor#198 ← print_char_cursor#130 +Not coalescing [339] print_char_cursor#187 ← print_line_cursor#1 Coalesced (already) [341] print_line_cursor#107 ← print_line_cursor#1 -Coalesced (already) [342] print_char_cursor#196 ← print_char_cursor#128 -Coalesced (already) [345] print_char_cursor#217 ← print_char_cursor#128 +Coalesced (already) [342] print_char_cursor#199 ← print_char_cursor#130 +Coalesced (already) [345] print_char_cursor#219 ← print_char_cursor#130 Coalesced [346] mul16u_compare::a#15 ← mul16u_compare::a#1 Coalesced [347] mul16u_compare::b#15 ← mul16u_compare::b#1 Coalesced [348] mul16u_compare::i#14 ← mul16u_compare::i#1 @@ -3645,22 +3666,22 @@ Coalesced (already) [349] mul16u_compare::a#17 ← mul16u_compare::a#1 Coalesced (already) [350] mul16u_compare::b#17 ← mul16u_compare::b#1 Coalesced [351] mul16u_compare::j#11 ← mul16u_compare::j#1 Coalesced [352] mul16u_compare::ok#5 ← mul16u_compare::ok#4 -Coalesced (already) [353] print_char_cursor#185 ← print_char_cursor#128 +Coalesced (already) [353] print_char_cursor#188 ← print_char_cursor#130 Coalesced [356] print_word::w#7 ← print_word::w#3 -Coalesced (already) [357] print_char_cursor#200 ← print_char_cursor#128 -Coalesced (already) [359] print_char_cursor#186 ← print_char_cursor#20 +Coalesced (already) [357] print_char_cursor#201 ← print_char_cursor#130 +Coalesced (already) [359] print_char_cursor#189 ← print_char_cursor#21 Coalesced [362] print_word::w#8 ← print_word::w#4 -Coalesced (already) [363] print_char_cursor#201 ← print_char_cursor#128 -Coalesced (already) [365] print_char_cursor#187 ← print_char_cursor#20 +Coalesced (already) [363] print_char_cursor#202 ← print_char_cursor#130 +Coalesced (already) [365] print_char_cursor#190 ← print_char_cursor#21 Coalesced [368] print_dword::dw#6 ← print_dword::dw#1 -Coalesced (already) [369] print_char_cursor#205 ← print_char_cursor#128 -Coalesced (already) [371] print_char_cursor#188 ← print_char_cursor#20 +Coalesced (already) [369] print_char_cursor#206 ← print_char_cursor#130 +Coalesced (already) [371] print_char_cursor#191 ← print_char_cursor#21 Coalesced [374] print_dword::dw#7 ← print_dword::dw#2 -Coalesced (already) [375] print_char_cursor#206 ← print_char_cursor#128 -Coalesced (already) [377] print_char_cursor#189 ← print_char_cursor#20 +Coalesced (already) [375] print_char_cursor#207 ← print_char_cursor#130 +Coalesced (already) [377] print_char_cursor#192 ← print_char_cursor#21 Coalesced [380] print_dword::dw#8 ← print_dword::dw#3 -Coalesced (already) [381] print_char_cursor#207 ← print_char_cursor#128 -Coalesced (already) [383] print_char_cursor#197 ← print_char_cursor#20 +Coalesced (already) [381] print_char_cursor#208 ← print_char_cursor#130 +Coalesced (already) [383] print_char_cursor#200 ← print_char_cursor#21 Coalesced [393] muls16u::return#5 ← muls16u::m#1 Coalesced [396] muls16u::m#5 ← muls16u::m#1 Coalesced [397] muls16u::i#3 ← muls16u::i#1 @@ -3699,8 +3720,8 @@ Culled Empty Block (label) print_sdword::@5 Culled Empty Block (label) print_dword::@2 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) mulf16s::@8 Culled Empty Block (label) mulf16s::@7 Culled Empty Block (label) mul16s::@8 @@ -3731,7 +3752,7 @@ Culled Empty Block (label) mulf_init::@10 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @40 to @1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block print_sdword::@4 to print_sdword::@3 Renumbering block mul16u::@4 to mul16u::@3 Renumbering block mul16u::@7 to mul16u::@4 @@ -3781,7 +3802,8 @@ Adding NOP phi() at start of mul16s_error::@6 Adding NOP phi() at start of mul16s_error::@8 Adding NOP phi() at start of mul16s_error::@10 Adding NOP phi() at start of print_sdword::@2 -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of mul16u_compare Adding NOP phi() at start of mul16u_compare::@6 Adding NOP phi() at start of mul16u_compare::@15 @@ -3827,13 +3849,13 @@ main::@return: scope:[main] from main::@3 [12] return to:@return mul16s_compare: scope:[mul16s_compare] from main::@3 - [13] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 + [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 to:mul16s_compare::@1 mul16s_compare::@1: scope:[mul16s_compare] from mul16s_compare mul16s_compare::@8 [14] (byte) mul16s_compare::i#12 ← phi( mul16s_compare/(byte) 0 mul16s_compare::@8/(byte) mul16s_compare::i#1 ) [14] (signed word) mul16s_compare::b#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::b#1 ) [14] (signed word) mul16s_compare::a#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::a#1 ) - [14] (byte*) print_char_cursor#143 ← phi( mul16s_compare/(byte*~) print_char_cursor#218 mul16s_compare::@8/(byte*) print_char_cursor#128 ) + [14] (byte*) print_char_cursor#146 ← phi( mul16s_compare/(byte*~) print_char_cursor#220 mul16s_compare::@8/(byte*) print_char_cursor#130 ) [15] call print_str to:mul16s_compare::@2 mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@1 mul16s_compare::@5 @@ -3904,7 +3926,7 @@ mul16s_compare::@9: scope:[mul16s_compare] from mul16s_compare::@8 [54] call print_ln to:mul16s_compare::@13 mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@9 - [55] (byte*~) print_char_cursor#177 ← (byte*) print_line_cursor#1 + [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 [56] call print_str to:mul16s_compare::@14 mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 @@ -3912,23 +3934,23 @@ mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 [58] call print_ln to:mul16s_compare::@return print_ln: scope:[print_ln] from mul16s_compare::@14 mul16s_compare::@9 mul16s_error::@10 mul16u_compare::@14 mul16u_compare::@9 mul16u_error::@10 - [59] (byte*) print_char_cursor#129 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#128 mul16s_compare::@14/(byte*) print_char_cursor#128 mul16s_error::@10/(byte*) print_char_cursor#20 mul16u_compare::@9/(byte*) print_char_cursor#128 mul16u_compare::@14/(byte*) print_char_cursor#128 mul16u_error::@10/(byte*) print_char_cursor#20 ) + [59] (byte*) print_char_cursor#131 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#130 mul16s_compare::@14/(byte*) print_char_cursor#130 mul16s_error::@10/(byte*) print_char_cursor#21 mul16u_compare::@9/(byte*) print_char_cursor#130 mul16u_compare::@14/(byte*) print_char_cursor#130 mul16u_error::@10/(byte*) print_char_cursor#21 ) [59] (byte*) print_line_cursor#43 ← phi( mul16s_compare::@9/(byte*) print_line_cursor#1 mul16s_compare::@14/(byte*) print_line_cursor#1 mul16s_error::@10/(byte*) print_line_cursor#1 mul16u_compare::@9/(byte*) 1024 mul16u_compare::@14/(byte*) print_line_cursor#1 mul16u_error::@10/(byte*) 1024 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [60] (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 ) [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 - [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 + [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [63] return to:@return print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@13 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@13 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8 - [64] (byte*) print_char_cursor#148 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#143 mul16s_compare::@13/(byte*~) print_char_cursor#177 mul16s_error/(byte*) print_char_cursor#128 mul16s_error::@2/(byte*) print_char_cursor#20 mul16s_error::@4/(byte*) print_char_cursor#20 mul16s_error::@6/(byte*) print_char_cursor#20 mul16s_error::@8/(byte*) print_char_cursor#20 mul16u_compare::@1/(byte*) print_char_cursor#139 mul16u_compare::@13/(byte*~) print_char_cursor#184 mul16u_error/(byte*) print_char_cursor#128 mul16u_error::@2/(byte*) print_char_cursor#20 mul16u_error::@4/(byte*) print_char_cursor#20 mul16u_error::@6/(byte*) print_char_cursor#20 mul16u_error::@8/(byte*) print_char_cursor#20 ) + [64] (byte*) print_char_cursor#151 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#146 mul16s_compare::@13/(byte*~) print_char_cursor#180 mul16s_error/(byte*) print_char_cursor#130 mul16s_error::@2/(byte*) print_char_cursor#21 mul16s_error::@4/(byte*) print_char_cursor#21 mul16s_error::@6/(byte*) print_char_cursor#21 mul16s_error::@8/(byte*) print_char_cursor#21 mul16u_compare::@1/(byte*) print_char_cursor#142 mul16u_compare::@13/(byte*~) print_char_cursor#187 mul16u_error/(byte*) print_char_cursor#130 mul16u_error::@2/(byte*) print_char_cursor#21 mul16u_error::@4/(byte*) print_char_cursor#21 mul16u_error::@6/(byte*) print_char_cursor#21 mul16u_error::@8/(byte*) print_char_cursor#21 ) [64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) str mul16s_compare::@13/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) str1 mul16s_error::@4/(const string) str2 mul16s_error::@6/(const string) str3 mul16s_error::@8/(const string) str4 mul16u_compare::@1/(const string) str mul16u_compare::@13/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) str1 mul16u_error::@4/(const string) str2 mul16u_error::@6/(const string) str3 mul16u_error::@8/(const string) str4 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [65] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#148 print_str::@2/(byte*) print_char_cursor#1 ) + [65] (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#151 print_str::@2/(byte*) print_char_cursor#1 ) [65] (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 ) [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -3936,8 +3958,8 @@ print_str::@return: scope:[print_str] from print_str::@1 [67] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) - [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 + [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) + [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 to:print_str::@1 mul16s_error: scope:[mul16s_error] from mul16s_compare::@7 @@ -3999,7 +4021,7 @@ print_sdword::@3: scope:[print_sdword] from print_sdword::@2 [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 to:print_sdword::@1 print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@3 - [99] (byte*) print_char_cursor#134 ← phi( print_sdword/(byte*) print_char_cursor#128 print_sdword::@3/(byte*) print_char_cursor#20 ) + [99] (byte*) print_char_cursor#137 ← phi( print_sdword/(byte*) print_char_cursor#130 print_sdword::@3/(byte*) print_char_cursor#21 ) [99] (signed dword) print_sdword::dw#5 ← phi( print_sdword/(signed dword) print_sdword::dw#4 print_sdword::@3/(signed dword) print_sdword::dw#0 ) [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [101] call print_dword @@ -4008,7 +4030,7 @@ print_sdword::@return: scope:[print_sdword] from print_sdword::@1 [102] return to:@return print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@1 - [103] (byte*) print_char_cursor#133 ← phi( mul16u_error::@5/(byte*) print_char_cursor#128 mul16u_error::@7/(byte*) print_char_cursor#128 mul16u_error::@9/(byte*) print_char_cursor#128 print_sdword::@1/(byte*) print_char_cursor#134 ) + [103] (byte*) print_char_cursor#136 ← phi( mul16u_error::@5/(byte*) print_char_cursor#130 mul16u_error::@7/(byte*) print_char_cursor#130 mul16u_error::@9/(byte*) print_char_cursor#130 print_sdword::@1/(byte*) print_char_cursor#137 ) [103] (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@1/(dword) print_dword::dw#0 ) [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [105] call print_word @@ -4020,9 +4042,9 @@ print_dword::@1: scope:[print_dword] from print_dword print_dword::@return: scope:[print_dword] from print_dword::@1 [108] return to:@return -print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@1 - [109] (byte*) print_char_cursor#132 ← phi( mul16u_error::@1/(byte*) print_char_cursor#128 mul16u_error::@3/(byte*) print_char_cursor#128 print_dword/(byte*) print_char_cursor#133 print_dword::@1/(byte*) print_char_cursor#20 print_sword::@1/(byte*) print_char_cursor#130 ) - [109] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2 + [109] (byte*) print_char_cursor#135 ← phi( mul16u_error::@1/(byte*) print_char_cursor#130 mul16u_error::@3/(byte*) print_char_cursor#130 print_dword/(byte*) print_char_cursor#136 print_dword::@1/(byte*) print_char_cursor#21 print_sword::@2/(byte*) print_char_cursor#21 ) + [109] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [111] call print_byte to:print_word::@1 @@ -4034,387 +4056,390 @@ print_word::@return: scope:[print_word] from print_word::@1 [114] return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - [115] (byte*) print_char_cursor#136 ← phi( print_word/(byte*) print_char_cursor#132 print_word::@1/(byte*) print_char_cursor#20 ) + [115] (byte*) print_char_cursor#139 ← phi( print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#21 ) [115] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [118] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [121] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 [122] return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@2 - [123] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#20 print_sdword::@2/(byte*) print_char_cursor#128 print_sword::@2/(byte*) print_char_cursor#128 ) - [123] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sdword::@2/(byte) '-' print_sword::@2/(byte) '-' ) - [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 - [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@1 print_sword::@3 + [123] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#21 print_sdword::@2/(byte*) print_char_cursor#130 print_sword::@1/(byte*) print_char_cursor#130 print_sword::@3/(byte*) print_char_cursor#130 ) + [123] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 + [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 to:print_char::@return print_char::@return: scope:[print_char] from print_char [126] return to:@return print_sword: scope:[print_sword] from mul16s_error::@1 mul16s_error::@3 [127] (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 ) - [128] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [129] phi() [130] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [132] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#128 print_sword::@3/(byte*) print_char_cursor#20 ) - [132] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 ) - [133] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - [134] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [131] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) + [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + [133] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [135] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [134] return to:@return +print_sword::@1: scope:[print_sword] from print_sword + [135] phi() + [136] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 + to:print_sword::@2 mulf16s: scope:[mulf16s] from mul16s_compare::@11 - [136] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 - [137] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 - [138] call mulf16u - [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 + [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 + [140] call mulf16u + [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 to:mulf16s::@5 mulf16s::@5: scope:[mulf16s] from mulf16s - [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - [141] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 + [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@5 - [142] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 - [143] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 - [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 + [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 + [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 + [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5 - [145] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) - [146] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 + [147] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) + [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [147] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 - [148] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 - [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 + [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 + [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 + [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [150] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [151] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + [152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [152] return + [154] return to:@return mulf16u: scope:[mulf16u] from mul16u_compare::@11 mulf16s - [153] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 ) - [153] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 ) - [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 - [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 + [155] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 ) + [155] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 ) + [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 + [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) + [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [158] return + [160] return to:@return mul16s: scope:[mul16s] from mul16s_compare::@10 - [159] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 - [160] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 - [161] call mul16u - [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 + [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 + [163] call mul16u + [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@5 mul16s::@5: scope:[mul16s] from mul16s - [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [164] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 + [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@5 - [165] (word~) mul16s::$9 ← > (dword) mul16s::m#0 - [166] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 - [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 + [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 + [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5 - [168] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 ) - [169] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 + [170] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 ) + [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 - [170] (word~) mul16s::$13 ← > (dword) mul16s::m#5 - [171] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 - [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 + [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 + [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 + [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - [173] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) - [174] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + [175] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) + [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [175] return + [177] return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@10 - [176] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 ) - [176] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 ) + [178] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 ) + [178] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [177] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [177] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [177] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [178] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 + [179] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [179] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [179] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [179] return + [181] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [180] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 - [181] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 + [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [182] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [183] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 - [185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [185] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 + [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 muls16s: scope:[muls16s] from mul16s_compare::@2 - [186] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 + [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 to:muls16s::@2 muls16s::@2: scope:[muls16s] from muls16s - [187] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 + [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 to:muls16s::@3 muls16s::@3: scope:[muls16s] from muls16s::@2 muls16s::@3 - [188] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 ) - [188] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) - [189] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 - [190] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 - [191] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 + [190] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 ) + [190] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) + [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 + [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 + [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 to:muls16s::@1 muls16s::@1: scope:[muls16s] from muls16s::@2 muls16s::@3 muls16s::@4 - [192] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) + [194] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) to:muls16s::@return muls16s::@return: scope:[muls16s] from muls16s::@1 - [193] return + [195] return to:@return muls16s::@4: scope:[muls16s] from muls16s muls16s::@4 - [194] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 ) - [194] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 ) - [195] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 - [196] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 - [197] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 + [196] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 ) + [196] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 ) + [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 + [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 + [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 to:muls16s::@1 mul16u_compare: scope:[mul16u_compare] from main::@2 - [198] phi() + [200] phi() to:mul16u_compare::@1 mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@8 - [199] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 ) - [199] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 ) - [199] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 ) - [199] (byte*) print_char_cursor#139 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#128 ) - [200] call print_str + [201] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 ) + [201] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 ) + [201] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 ) + [201] (byte*) print_char_cursor#142 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#130 ) + [202] call print_str to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5 - [201] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) - [201] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) - [201] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) - [202] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b - [203] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd - [204] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - [205] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - [206] call muls16u - [207] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + [203] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) + [203] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) + [203] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) + [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b + [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd + [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + [208] call muls16u + [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 to:mul16u_compare::@10 mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@2 - [208] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - [209] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 - [210] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - [211] call mul16u - [212] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 + [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + [213] call mul16u + [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - [213] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - [214] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - [215] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - [216] call mulf16u - [217] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + [218] call mulf16u + [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 to:mul16u_compare::@12 mul16u_compare::@12: scope:[mul16u_compare] from mul16u_compare::@11 - [218] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - [219] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 + [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 to:mul16u_compare::@6 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@12 - [220] phi() + [222] phi() to:mul16u_compare::@3 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_compare::@6 - [221] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 ) - [222] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 + [223] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 ) + [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 to:mul16u_compare::@4 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@3 - [223] phi() + [225] phi() to:mul16u_compare::@4 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@3 - [224] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 ) - [225] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 + [226] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 ) + [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 to:mul16u_compare::@7 mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@4 - [226] *((const byte*) BGCOL#0) ← (byte) 2 - [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 - [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - [232] call mul16u_error + [228] *((const byte*) BGCOL#0) ← (byte) 2 + [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 + [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + [234] call mul16u_error to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@14 mul16u_compare::@7 - [233] return + [235] return to:@return mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 - [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 - [235] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 + [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 + [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 to:mul16u_compare::@8 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@5 - [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 - [237] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 + [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 + [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 to:mul16u_compare::@9 mul16u_compare::@9: scope:[mul16u_compare] from mul16u_compare::@8 - [238] phi() - [239] call print_ln + [240] phi() + [241] call print_ln to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@9 - [240] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 - [241] call print_str + [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 + [243] call print_str to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 - [242] phi() - [243] call print_ln + [244] phi() + [245] call print_ln to:mul16u_compare::@return mul16u_error: scope:[mul16u_error] from mul16u_compare::@7 - [244] phi() - [245] call print_str + [246] phi() + [247] call print_str to:mul16u_error::@1 mul16u_error::@1: scope:[mul16u_error] from mul16u_error - [246] (word) print_word::w#3 ← (word) mul16u_error::a#0 - [247] call print_word + [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 + [249] call print_word to:mul16u_error::@2 mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 - [248] phi() - [249] call print_str + [250] phi() + [251] call print_str to:mul16u_error::@3 mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 - [250] (word) print_word::w#4 ← (word) mul16u_error::b#0 - [251] call print_word + [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 + [253] call print_word to:mul16u_error::@4 mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 - [252] phi() - [253] call print_str + [254] phi() + [255] call print_str to:mul16u_error::@5 mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 - [254] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - [255] call print_dword + [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + [257] call print_dword to:mul16u_error::@6 mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 - [256] phi() - [257] call print_str + [258] phi() + [259] call print_str to:mul16u_error::@7 mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 - [258] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 - [259] call print_dword + [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + [261] call print_dword to:mul16u_error::@8 mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 - [260] phi() - [261] call print_str + [262] phi() + [263] call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 - [262] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 - [263] call print_dword + [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 + [265] call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 - [264] phi() - [265] call print_ln + [266] phi() + [267] call print_ln to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10 - [266] return + [268] return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 - [267] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 + [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 to:muls16u::@2 muls16u::@2: scope:[muls16u] from muls16u muls16u::@2 - [268] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 ) - [268] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) - [269] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 - [270] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 - [271] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 + [270] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 ) + [270] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) + [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 + [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 + [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 to:muls16u::@1 muls16u::@1: scope:[muls16u] from muls16u muls16u::@2 - [272] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) + [274] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) to:muls16u::@return muls16u::@return: scope:[muls16u] from muls16u::@1 - [273] return + [275] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [274] phi() + [276] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [275] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [275] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [275] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [275] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [275] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [276] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [277] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 - [278] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 + [277] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [277] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [277] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [277] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [277] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 + [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@1 - [279] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [280] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@3 - [281] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) - [281] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) - [282] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 - [283] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 - [284] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 - [285] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 - [286] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [287] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [288] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [289] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 + [283] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) + [283] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) + [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 + [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 + [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 + [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 + [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@2 mulf_init::@5 - [290] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) - [290] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) - [290] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) - [290] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) - [291] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [292] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [293] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [294] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [295] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 + [292] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) + [292] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) + [292] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) + [292] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) + [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 to:mulf_init::@5 mulf_init::@7: scope:[mulf_init] from mulf_init::@4 - [296] phi() + [298] phi() to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@4 mulf_init::@7 - [297] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) - [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 + [299] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) + [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 to:mulf_init::@6 mulf_init::@6: scope:[mulf_init] from mulf_init::@5 - [300] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) - [301] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) + [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) + [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@6 - [302] return + [304] return to:@return print_cls: scope:[print_cls] from main - [303] phi() + [305] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [304] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [305] *((byte*) print_cls::sc#2) ← (byte) ' ' - [306] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [307] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [306] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [307] *((byte*) print_cls::sc#2) ← (byte) ' ' + [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [308] return + [310] return to:@return @@ -4645,26 +4670,25 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#2 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#2 4.0 (byte) print_char::ch#3 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#4 4.0 +(byte) print_char::ch#5 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#128 3.2454545454545443 -(byte*) print_char_cursor#129 5.75 -(byte*) print_char_cursor#130 3.0 -(byte*) print_char_cursor#132 6.0 -(byte*) print_char_cursor#133 5.0 -(byte*) print_char_cursor#134 3.0 -(byte*) print_char_cursor#136 2.0 -(byte*) print_char_cursor#139 22.0 -(byte*) print_char_cursor#143 24.0 -(byte*) print_char_cursor#148 48.0 -(byte*~) print_char_cursor#177 4.0 -(byte*~) print_char_cursor#184 4.0 -(byte*) print_char_cursor#20 0.7441860465116277 -(byte*~) print_char_cursor#218 4.0 -(byte*) print_char_cursor#84 6.0 +(byte*) print_char_cursor#130 3.2162162162162145 +(byte*) print_char_cursor#131 5.75 +(byte*) print_char_cursor#135 6.0 +(byte*) print_char_cursor#136 5.0 +(byte*) print_char_cursor#137 3.0 +(byte*) print_char_cursor#139 2.0 +(byte*) print_char_cursor#142 22.0 +(byte*) print_char_cursor#146 24.0 +(byte*) print_char_cursor#151 48.0 +(byte*~) print_char_cursor#180 4.0 +(byte*~) print_char_cursor#187 4.0 +(byte*) print_char_cursor#21 0.6956521739130432 +(byte*~) print_char_cursor#220 4.0 +(byte*) print_char_cursor#86 7.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -4701,8 +4725,8 @@ VARIABLE REGISTER WEIGHTS (signed word) print_sword::w#0 4.0 (signed word) print_sword::w#1 4.0 (signed word) print_sword::w#2 4.0 -(signed word) print_sword::w#3 2.5 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#3 1.6666666666666665 +(signed word) print_sword::w#5 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 4.0 @@ -4726,9 +4750,9 @@ Initial phi equivalence classes [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -[ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] -[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +[ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] +[ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] @@ -4819,9 +4843,9 @@ Complete equivalence classes [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -[ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] -[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +[ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] +[ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] @@ -4911,9 +4935,9 @@ Allocated zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::d Allocated zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] Allocated zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] Allocated zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated zp ZP_BYTE:24 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Allocated zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] -Allocated zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Allocated zp ZP_BYTE:24 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Allocated zp ZP_WORD:25 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] +Allocated zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] Allocated zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] Allocated zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] Allocated zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] @@ -5024,7 +5048,7 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [303] phi from main to print_cls [phi:main->print_cls] + //SEG12 [305] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -5033,7 +5057,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call mulf_init - //SEG16 [274] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [276] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -5042,7 +5066,7 @@ main: { //SEG18 main::@2 b2: //SEG19 [9] call mul16u_compare - //SEG20 [198] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG20 [200] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] mul16u_compare_from_b2: jsr mul16u_compare //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -5069,7 +5093,7 @@ mul16s_compare: { .label j = 7 .label i = 2 .label ok = 8 - //SEG27 [13] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG27 [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -5089,21 +5113,21 @@ mul16s_compare: { sta a lda #>-$7fff sta a+1 - //SEG32 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#218 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + //SEG32 [14] phi (byte*) print_char_cursor#146 = (byte*~) print_char_cursor#220 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy jmp b1 //SEG33 [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1] b1_from_b8: //SEG34 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy //SEG35 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy //SEG36 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy - //SEG37 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy + //SEG37 [14] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy jmp b1 //SEG38 mul16s_compare::@1 b1: //SEG39 [15] call print_str //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] print_str_from_b1: - //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy + //SEG41 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#146 [phi:mul16s_compare::@1->print_str#0] -- register_copy //SEG42 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b9: - //SEG110 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@9->print_ln#0] -- register_copy + //SEG110 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@9->print_ln#0] -- register_copy //SEG111 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy jsr print_ln jmp b13 //SEG112 mul16s_compare::@13 b13: - //SEG113 [55] (byte*~) print_char_cursor#177 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG113 [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -5400,7 +5424,7 @@ mul16s_compare: { //SEG114 [56] call print_str //SEG115 [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str] print_str_from_b13: - //SEG116 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#177 [phi:mul16s_compare::@13->print_str#0] -- register_copy + //SEG116 [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy //SEG117 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b14: - //SEG122 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@14->print_ln#0] -- register_copy + //SEG122 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@14->print_ln#0] -- register_copy //SEG123 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -5439,7 +5463,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5462,7 +5486,7 @@ print_str: { //SEG133 [65] 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: - //SEG134 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG134 [65] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#151 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG135 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 //SEG136 print_str::@1 @@ -5479,12 +5503,12 @@ print_str: { rts //SEG140 print_str::@2 b2: - //SEG141 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + //SEG141 [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -5507,7 +5531,7 @@ mul16s_error: { //SEG145 [72] call print_str //SEG146 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] print_str_from_mul16s_error: - //SEG147 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy + //SEG147 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16s_error->print_str#0] -- register_copy //SEG148 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b2: - //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy + //SEG158 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@2->print_str#0] -- register_copy //SEG159 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b4: - //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy + //SEG169 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@4->print_str#0] -- register_copy //SEG170 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b6: - //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy + //SEG180 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@6->print_str#0] -- register_copy //SEG181 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b8: - //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy + //SEG191 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@8->print_str#0] -- register_copy //SEG192 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b10: - //SEG202 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy + //SEG202 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16s_error::@10->print_ln#0] -- register_copy //SEG203 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -5685,8 +5709,8 @@ print_sdword: { //SEG210 [97] call print_char //SEG211 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] print_char_from_b2: - //SEG212 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG213 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG212 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG213 [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char @@ -5714,7 +5738,7 @@ print_sdword: { //SEG216 [99] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] b1_from_print_sdword: b1_from_b3: - //SEG217 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy + //SEG217 [99] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#130 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy //SEG218 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@3->print_sdword::@1#1] -- register_copy jmp b1 //SEG219 print_sdword::@1 @@ -5731,7 +5755,7 @@ print_sdword: { //SEG221 [101] call print_dword //SEG222 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] print_dword_from_b1: - //SEG223 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG223 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#137 [phi:print_sdword::@1->print_dword#0] -- register_copy //SEG224 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword jmp breturn @@ -5753,7 +5777,7 @@ print_dword: { //SEG229 [105] call print_word //SEG230 [109] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG231 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy + //SEG231 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#136 [phi:print_dword->print_word#0] -- register_copy //SEG232 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 @@ -5767,7 +5791,7 @@ print_dword: { //SEG235 [107] call print_word //SEG236 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG237 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG237 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_dword::@1->print_word#0] -- register_copy //SEG238 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn @@ -5787,7 +5811,7 @@ print_word: { //SEG243 [111] call print_byte //SEG244 [115] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG245 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy + //SEG245 [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy //SEG246 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 @@ -5799,7 +5823,7 @@ print_word: { //SEG249 [113] call print_byte //SEG250 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG251 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG251 [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#21 [phi:print_word::@1->print_byte#0] -- register_copy //SEG252 [115] 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 @@ -5822,15 +5846,15 @@ print_byte: { lsr lsr sta _0 - //SEG257 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG257 [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch //SEG258 [118] call print_char //SEG259 [123] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG260 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG261 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG260 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy + //SEG261 [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 //SEG262 print_byte::@1 @@ -5839,15 +5863,15 @@ print_byte: { lda #$f and b sta _2 - //SEG264 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG264 [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch //SEG265 [121] call print_char //SEG266 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG267 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG268 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG267 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#21 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG268 [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn //SEG269 print_byte::@return @@ -5860,11 +5884,11 @@ print_byte: { // print_char(byte zeropage($18) ch) print_char: { .label ch = $18 - //SEG272 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + //SEG272 [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG273 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG273 [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -5880,26 +5904,62 @@ print_char: { // print_sword(signed word zeropage($1b) w) print_sword: { .label w = $1b - //SEG277 [128] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG277 [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG278 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG279 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG278 [129] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG279 print_sword::@3 + b3: //SEG280 [130] call print_char - //SEG281 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG282 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG283 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG281 [123] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG282 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG283 [123] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG284 [131] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG285 [131] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG286 print_sword::@2 + b2: + //SEG287 [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG288 [133] call print_word + //SEG289 [109] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG290 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG291 [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG292 print_sword::@return + breturn: + //SEG293 [134] return + rts + //SEG294 [135] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG295 print_sword::@1 + b1: + //SEG296 [136] call print_char + //SEG297 [123] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG298 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG299 [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG284 print_sword::@3 - b3: - //SEG285 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG300 print_sword::@4 + b4: + //SEG301 [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -5907,32 +5967,9 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG286 [132] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG287 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG288 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG289 print_sword::@1 - b1: - //SEG290 [133] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG291 [134] call print_word - //SEG292 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG293 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG294 [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG295 print_sword::@return - breturn: - //SEG296 [135] return - rts + jmp b2_from_b4 } -//SEG297 mulf16s +//SEG302 mulf16s // Fast multiply two signed words to a signed double word result // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zeropage($74) a, signed word zeropage($76) b) @@ -5946,23 +5983,23 @@ mulf16s: { .label a = $74 .label b = $76 .label return_2 = $78 - //SEG298 [136] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + //SEG303 [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG299 [137] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + //SEG304 [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG300 [138] call mulf16u - //SEG301 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG305 [140] call mulf16u + //SEG306 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - //SEG302 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG303 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG307 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG308 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u - //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + //SEG309 [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta mulf16u.return_2 lda mulf16u.return+1 @@ -5972,9 +6009,9 @@ mulf16s: { lda mulf16u.return+3 sta mulf16u.return_2+3 jmp b5 - //SEG305 mulf16s::@5 + //SEG310 mulf16s::@5 b5: - //SEG306 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 + //SEG311 [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 lda mulf16u.return_2 sta m lda mulf16u.return_2+1 @@ -5983,18 +6020,18 @@ mulf16s: { sta m+2 lda mulf16u.return_2+3 sta m+3 - //SEG307 [141] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + //SEG312 [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b5 jmp b3 - //SEG308 mulf16s::@3 + //SEG313 mulf16s::@3 b3: - //SEG309 [142] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG314 [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG310 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG315 [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _9 sec sbc b @@ -6002,30 +6039,30 @@ mulf16s: { lda _9+1 sbc b+1 sta _16+1 - //SEG311 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG316 [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG312 [145] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + //SEG317 [147] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] b1_from_b3: b1_from_b5: - //SEG313 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + //SEG318 [147] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy jmp b1 - //SEG314 mulf16s::@1 + //SEG319 mulf16s::@1 b1: - //SEG315 [146] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG320 [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG316 mulf16s::@4 + //SEG321 mulf16s::@4 b4: - //SEG317 [147] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG322 [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - //SEG318 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG323 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _13 sec sbc a @@ -6033,19 +6070,19 @@ mulf16s: { lda _13+1 sbc a+1 sta _17+1 - //SEG319 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG324 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG320 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG325 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - //SEG321 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG326 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 - //SEG322 mulf16s::@2 + //SEG327 mulf16s::@2 b2: - //SEG323 [151] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 -- vdsz1=vdsz2 + //SEG328 [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 -- vdsz1=vdsz2 lda m sta return lda m+1 @@ -6055,12 +6092,12 @@ mulf16s: { lda m+3 sta return+3 jmp breturn - //SEG324 mulf16s::@return + //SEG329 mulf16s::@return breturn: - //SEG325 [152] return + //SEG330 [154] return rts } -//SEG326 mulf16u +//SEG331 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X // mulf16u(word zeropage($21) a, word zeropage($23) b) @@ -6073,17 +6110,17 @@ mulf16u: { .label b = $23 .label return_2 = $92 .label return_3 = $cb - //SEG327 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG332 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG328 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG333 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG329 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG334 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -6176,7 +6213,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG330 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG335 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -6186,12 +6223,12 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG331 mulf16u::@return + //SEG336 mulf16u::@return breturn: - //SEG332 [158] return + //SEG337 [160] return rts } -//SEG333 mul16s +//SEG338 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($68) a, signed word zeropage($6a) b) @@ -6205,21 +6242,21 @@ mul16s: { .label a = $68 .label b = $6a .label return_2 = $6c - //SEG334 [159] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG339 [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG335 [160] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG340 [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG336 [161] call mul16u - //SEG337 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG341 [163] call mul16u + //SEG342 [178] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG338 [176] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - //SEG339 [176] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 + //SEG343 [178] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + //SEG344 [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -6228,7 +6265,7 @@ mul16s: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG340 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG345 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -6238,9 +6275,9 @@ mul16s: { lda mul16u.res+3 sta mul16u.return+3 jmp b5 - //SEG341 mul16s::@5 + //SEG346 mul16s::@5 b5: - //SEG342 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG347 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -6249,18 +6286,18 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - //SEG343 [164] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG348 [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b5 jmp b3 - //SEG344 mul16s::@3 + //SEG349 mul16s::@3 b3: - //SEG345 [165] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG350 [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG346 [166] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG351 [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _9 sec sbc b @@ -6268,30 +6305,30 @@ mul16s: { lda _9+1 sbc b+1 sta _16+1 - //SEG347 [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG352 [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG348 [168] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] + //SEG353 [170] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] b1_from_b3: b1_from_b5: - //SEG349 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy + //SEG354 [170] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy jmp b1 - //SEG350 mul16s::@1 + //SEG355 mul16s::@1 b1: - //SEG351 [169] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG356 [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG352 mul16s::@4 + //SEG357 mul16s::@4 b4: - //SEG353 [170] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG358 [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - //SEG354 [171] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG359 [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _13 sec sbc a @@ -6299,19 +6336,19 @@ mul16s: { lda _13+1 sbc a+1 sta _17+1 - //SEG355 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG360 [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG356 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG361 [175] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - //SEG357 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG362 [175] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 - //SEG358 mul16s::@2 + //SEG363 mul16s::@2 b2: - //SEG359 [174] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 + //SEG364 [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 lda m sta return lda m+1 @@ -6321,12 +6358,12 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG360 mul16s::@return + //SEG365 mul16s::@return breturn: - //SEG361 [175] return + //SEG366 [177] return rts } -//SEG362 mul16u +//SEG367 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($2d) a, word zeropage($29) b) mul16u: { @@ -6338,44 +6375,44 @@ mul16u: { .label return = $a6 .label b_1 = $2b .label return_3 = $c3 - //SEG363 [177] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG368 [179] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG364 [177] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG365 [177] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG369 [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG370 [179] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG366 [177] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG371 [179] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG367 mul16u::@1 + //SEG372 mul16u::@1 b1: - //SEG368 [178] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG373 [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG369 mul16u::@return + //SEG374 mul16u::@return breturn: - //SEG370 [179] return + //SEG375 [181] return rts - //SEG371 mul16u::@2 + //SEG376 mul16u::@2 b2: - //SEG372 [180] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG377 [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG373 [181] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 + //SEG378 [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG374 mul16u::@4 + //SEG379 mul16u::@4 b4: - //SEG375 [182] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG380 [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6389,29 +6426,29 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG376 [183] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG381 [185] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG377 [183] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG382 [185] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG378 mul16u::@3 + //SEG383 mul16u::@3 b3: - //SEG379 [184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG384 [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG380 [185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG385 [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG381 [177] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG386 [179] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG382 [177] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG383 [177] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG384 [177] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG387 [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG388 [179] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG389 [179] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG385 muls16s +//SEG390 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction // muls16s(signed word zeropage($5c) a, signed word zeropage($5e) b) @@ -6423,27 +6460,27 @@ muls16s: { .label a = $5c .label b = $5e .label return_2 = $60 - //SEG386 [186] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 + //SEG391 [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 lda a+1 bmi b4_from_muls16s jmp b2 - //SEG387 muls16s::@2 + //SEG392 muls16s::@2 b2: - //SEG388 [187] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 + //SEG393 [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 lda a+1 bmi b1_from_b2 bne !+ lda a beq b1_from_b2 !: - //SEG389 [188] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] + //SEG394 [190] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] b3_from_b2: - //SEG390 [188] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 + //SEG395 [190] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 lda #0 sta j lda #0 sta j+1 - //SEG391 [188] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 + //SEG396 [190] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 lda #0 sta m lda #0 @@ -6451,14 +6488,14 @@ muls16s: { sta m+2 sta m+3 jmp b3 - //SEG392 [188] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG397 [190] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - //SEG393 [188] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG394 [188] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG398 [190] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG399 [190] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 - //SEG395 muls16s::@3 + //SEG400 muls16s::@3 b3: - //SEG396 [189] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG401 [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -6478,26 +6515,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG397 [190] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG402 [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG398 [191] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG403 [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3_from_b3 lda j cmp a bne b3_from_b3 - //SEG399 [192] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] + //SEG404 [194] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] b1_from_b3: b1_from_b4: - //SEG400 [192] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy + //SEG405 [194] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy jmp b1 - //SEG401 [192] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] + //SEG406 [194] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] b1_from_b2: - //SEG402 [192] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 + //SEG407 [194] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 lda #0 sta return lda #0 @@ -6505,21 +6542,21 @@ muls16s: { sta return+2 sta return+3 jmp b1 - //SEG403 muls16s::@1 + //SEG408 muls16s::@1 b1: jmp breturn - //SEG404 muls16s::@return + //SEG409 muls16s::@return breturn: - //SEG405 [193] return + //SEG410 [195] return rts - //SEG406 [194] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] + //SEG411 [196] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] b4_from_muls16s: - //SEG407 [194] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 + //SEG412 [196] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 lda #0 sta i lda #0 sta i+1 - //SEG408 [194] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 + //SEG413 [196] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 lda #0 sta m lda #0 @@ -6527,14 +6564,14 @@ muls16s: { sta m+2 sta m+3 jmp b4 - //SEG409 [194] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] + //SEG414 [196] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] b4_from_b4: - //SEG410 [194] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy - //SEG411 [194] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy + //SEG415 [196] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy + //SEG416 [196] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy jmp b4 - //SEG412 muls16s::@4 + //SEG417 muls16s::@4 b4: - //SEG413 [195] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG418 [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -6554,13 +6591,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG414 [196] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG419 [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG415 [197] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 + //SEG420 [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b4_from_b4 @@ -6569,7 +6606,7 @@ muls16s: { bne b4_from_b4 jmp b1_from_b4 } -//SEG416 mul16u_compare +//SEG421 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $40 @@ -6580,63 +6617,63 @@ mul16u_compare: { .label j = $44 .label i = $3f .label ok = $45 - //SEG417 [199] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG422 [201] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - //SEG418 [199] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG423 [201] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG419 [199] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG424 [201] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 lda #0 sta b lda #0 sta b+1 - //SEG420 [199] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG425 [201] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 lda #0 sta a lda #0 sta a+1 - //SEG421 [199] phi (byte*) print_char_cursor#139 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG426 [201] phi (byte*) print_char_cursor#142 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG422 [199] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] + //SEG427 [201] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] b1_from_b8: - //SEG423 [199] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy - //SEG424 [199] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy - //SEG425 [199] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy - //SEG426 [199] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy + //SEG428 [201] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy + //SEG429 [201] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy + //SEG430 [201] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy + //SEG431 [201] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy jmp b1 - //SEG427 mul16u_compare::@1 + //SEG432 mul16u_compare::@1 b1: - //SEG428 [200] call print_str - //SEG429 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG433 [202] call print_str + //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - //SEG430 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG431 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG435 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#142 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG432 [201] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG437 [203] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - //SEG433 [201] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 + //SEG438 [203] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG434 [201] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG435 [201] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG439 [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG440 [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG436 [201] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG441 [203] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - //SEG437 [201] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG438 [201] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG439 [201] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG442 [203] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG443 [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG444 [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG440 mul16u_compare::@2 + //SEG445 mul16u_compare::@2 b2: - //SEG441 [202] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -6644,7 +6681,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG442 [203] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 + //SEG447 [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -6652,19 +6689,19 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG443 [204] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG448 [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta muls16u.a lda a+1 sta muls16u.a+1 - //SEG444 [205] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG449 [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta muls16u.b lda b+1 sta muls16u.b+1 - //SEG445 [206] call muls16u + //SEG450 [208] call muls16u jsr muls16u - //SEG446 [207] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 + //SEG451 [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 lda muls16u.return sta muls16u.return_2 lda muls16u.return+1 @@ -6674,9 +6711,9 @@ mul16u_compare: { lda muls16u.return+3 sta muls16u.return_2+3 jmp b10 - //SEG447 mul16u_compare::@10 + //SEG452 mul16u_compare::@10 b10: - //SEG448 [208] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 + //SEG453 [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 lda muls16u.return_2 sta ms lda muls16u.return_2+1 @@ -6685,21 +6722,21 @@ mul16u_compare: { sta ms+2 lda muls16u.return_2+3 sta ms+3 - //SEG449 [209] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG454 [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG450 [210] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG455 [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u.b_1 lda b+1 sta mul16u.b_1+1 - //SEG451 [211] call mul16u - //SEG452 [176] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] + //SEG456 [213] call mul16u + //SEG457 [178] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] mul16u_from_b10: - //SEG453 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy - //SEG454 [176] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 + //SEG458 [178] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy + //SEG459 [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 lda mul16u.b_1 sta mul16u.mb lda mul16u.b_1+1 @@ -6708,7 +6745,7 @@ mul16u_compare: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG455 [212] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG460 [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -6718,9 +6755,9 @@ mul16u_compare: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b11 - //SEG456 mul16u_compare::@11 + //SEG461 mul16u_compare::@11 b11: - //SEG457 [213] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG462 [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta mn lda mul16u.return_3+1 @@ -6729,23 +6766,23 @@ mul16u_compare: { sta mn+2 lda mul16u.return_3+3 sta mn+3 - //SEG458 [214] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG463 [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG459 [215] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG464 [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG460 [216] call mulf16u - //SEG461 [153] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] + //SEG465 [218] call mulf16u + //SEG466 [155] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] mulf16u_from_b11: - //SEG462 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy - //SEG463 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy + //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy + //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy jsr mulf16u - //SEG464 [217] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + //SEG469 [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta mulf16u.return_3 lda mulf16u.return+1 @@ -6755,9 +6792,9 @@ mul16u_compare: { lda mulf16u.return+3 sta mulf16u.return_3+3 jmp b12 - //SEG465 mul16u_compare::@12 + //SEG470 mul16u_compare::@12 b12: - //SEG466 [218] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 + //SEG471 [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 lda mulf16u.return_3 sta mf lda mulf16u.return_3+1 @@ -6766,7 +6803,7 @@ mul16u_compare: { sta mf+2 lda mulf16u.return_3+3 sta mf+3 - //SEG467 [219] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG472 [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -6780,26 +6817,26 @@ mul16u_compare: { cmp mf+3 beq b3_from_b12 !: - //SEG468 [220] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] + //SEG473 [222] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] b6_from_b12: jmp b6 - //SEG469 mul16u_compare::@6 + //SEG474 mul16u_compare::@6 b6: - //SEG470 [221] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG475 [223] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - //SEG471 [221] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 + //SEG476 [223] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - //SEG472 [221] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] + //SEG477 [223] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] b3_from_b12: - //SEG473 [221] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuz1=vbuc1 + //SEG478 [223] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 - //SEG474 mul16u_compare::@3 + //SEG479 mul16u_compare::@3 b3: - //SEG475 [222] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 + //SEG480 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -6813,44 +6850,44 @@ mul16u_compare: { cmp mn+3 beq b15_from_b3 !: - //SEG476 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG481 [226] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - //SEG477 [224] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 + //SEG482 [226] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - //SEG478 [223] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] + //SEG483 [225] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] b15_from_b3: jmp b15 - //SEG479 mul16u_compare::@15 + //SEG484 mul16u_compare::@15 b15: - //SEG480 [224] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] + //SEG485 [226] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] b4_from_b15: - //SEG481 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy + //SEG486 [226] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy jmp b4 - //SEG482 mul16u_compare::@4 + //SEG487 mul16u_compare::@4 b4: - //SEG483 [225] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 + //SEG488 [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b7 - //SEG484 mul16u_compare::@7 + //SEG489 mul16u_compare::@7 b7: - //SEG485 [226] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG490 [228] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG486 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG491 [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG487 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG492 [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u_error.b lda b+1 sta mul16u_error.b+1 - //SEG488 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 + //SEG493 [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 lda ms sta mul16u_error.ms lda ms+1 @@ -6859,7 +6896,7 @@ mul16u_compare: { sta mul16u_error.ms+2 lda ms+3 sta mul16u_error.ms+3 - //SEG489 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 + //SEG494 [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 lda mn sta mul16u_error.mn lda mn+1 @@ -6868,7 +6905,7 @@ mul16u_compare: { sta mul16u_error.mn+2 lda mn+3 sta mul16u_error.mn+3 - //SEG490 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 + //SEG495 [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 lda mf sta mul16u_error.mf lda mf+1 @@ -6877,80 +6914,80 @@ mul16u_compare: { sta mul16u_error.mf+2 lda mf+3 sta mul16u_error.mf+3 - //SEG491 [232] call mul16u_error - //SEG492 [244] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] + //SEG496 [234] call mul16u_error + //SEG497 [246] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] mul16u_error_from_b7: jsr mul16u_error jmp breturn - //SEG493 mul16u_compare::@return + //SEG498 mul16u_compare::@return breturn: - //SEG494 [233] return + //SEG499 [235] return rts - //SEG495 mul16u_compare::@5 + //SEG500 mul16u_compare::@5 b5: - //SEG496 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 + //SEG501 [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 inc j - //SEG497 [235] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG502 [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp j bne b2_from_b5 jmp b8 - //SEG498 mul16u_compare::@8 + //SEG503 mul16u_compare::@8 b8: - //SEG499 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG504 [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG500 [237] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG505 [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b8 - //SEG501 [238] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] + //SEG506 [240] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] b9_from_b8: jmp b9 - //SEG502 mul16u_compare::@9 + //SEG507 mul16u_compare::@9 b9: - //SEG503 [239] call print_ln - //SEG504 [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] + //SEG508 [241] call print_ln + //SEG509 [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] print_ln_from_b9: - //SEG505 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@9->print_ln#0] -- register_copy - //SEG506 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 + //SEG510 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@9->print_ln#0] -- register_copy + //SEG511 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b13 - //SEG507 mul16u_compare::@13 + //SEG512 mul16u_compare::@13 b13: - //SEG508 [240] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG513 [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG509 [241] call print_str - //SEG510 [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] + //SEG514 [243] call print_str + //SEG515 [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] print_str_from_b13: - //SEG511 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#184 [phi:mul16u_compare::@13->print_str#0] -- register_copy - //SEG512 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 + //SEG516 [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy + //SEG517 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG513 [242] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] + //SEG518 [244] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] b14_from_b13: jmp b14 - //SEG514 mul16u_compare::@14 + //SEG519 mul16u_compare::@14 b14: - //SEG515 [243] call print_ln - //SEG516 [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] + //SEG520 [245] call print_ln + //SEG521 [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] print_ln_from_b14: - //SEG517 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@14->print_ln#0] -- register_copy - //SEG518 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy + //SEG522 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@14->print_ln#0] -- register_copy + //SEG523 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy jsr print_ln jmp breturn str1: .text "word multiply results match!@" } -//SEG519 mul16u_error +//SEG524 mul16u_error // mul16u_error(word zeropage($d3) a, word zeropage($d5) b, dword zeropage($d7) ms, dword zeropage($db) mn, dword zeropage($df) mf) mul16u_error: { .label a = $d3 @@ -6958,78 +6995,78 @@ mul16u_error: { .label ms = $d7 .label mn = $db .label mf = $df - //SEG520 [245] call print_str - //SEG521 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG525 [247] call print_str + //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - //SEG522 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG523 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG527 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16u_error->print_str#0] -- register_copy + //SEG528 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG524 mul16u_error::@1 + //SEG529 mul16u_error::@1 b1: - //SEG525 [246] (word) print_word::w#3 ← (word) mul16u_error::a#0 -- vwuz1=vwuz2 + //SEG530 [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 -- vwuz1=vwuz2 lda a sta print_word.w lda a+1 sta print_word.w+1 - //SEG526 [247] call print_word - //SEG527 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG531 [249] call print_word + //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - //SEG528 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG529 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG533 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG530 [248] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG535 [250] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 - //SEG531 mul16u_error::@2 + //SEG536 mul16u_error::@2 b2: - //SEG532 [249] call print_str - //SEG533 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG537 [251] call print_str + //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - //SEG534 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG535 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG539 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG536 mul16u_error::@3 + //SEG541 mul16u_error::@3 b3: - //SEG537 [250] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG542 [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG538 [251] call print_word - //SEG539 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG543 [253] call print_word + //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - //SEG540 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG541 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG545 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG542 [252] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG547 [254] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 - //SEG543 mul16u_error::@4 + //SEG548 mul16u_error::@4 b4: - //SEG544 [253] call print_str - //SEG545 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG549 [255] call print_str + //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - //SEG546 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG547 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG551 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG548 mul16u_error::@5 + //SEG553 mul16u_error::@5 b5: - //SEG549 [254] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 + //SEG554 [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 lda ms sta print_dword.dw lda ms+1 @@ -7038,31 +7075,31 @@ mul16u_error: { sta print_dword.dw+2 lda ms+3 sta print_dword.dw+3 - //SEG550 [255] call print_dword - //SEG551 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG555 [257] call print_dword + //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - //SEG552 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG553 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG557 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG554 [256] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG559 [258] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 - //SEG555 mul16u_error::@6 + //SEG560 mul16u_error::@6 b6: - //SEG556 [257] call print_str - //SEG557 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG561 [259] call print_str + //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - //SEG558 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG559 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG563 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG560 mul16u_error::@7 + //SEG565 mul16u_error::@7 b7: - //SEG561 [258] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG566 [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -7071,31 +7108,31 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG562 [259] call print_dword - //SEG563 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG567 [261] call print_dword + //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - //SEG564 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG565 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG569 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG566 [260] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG571 [262] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 - //SEG567 mul16u_error::@8 + //SEG572 mul16u_error::@8 b8: - //SEG568 [261] call print_str - //SEG569 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG573 [263] call print_str + //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - //SEG570 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG571 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG575 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG572 mul16u_error::@9 + //SEG577 mul16u_error::@9 b9: - //SEG573 [262] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG578 [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -7104,35 +7141,35 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG574 [263] call print_dword - //SEG575 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG579 [265] call print_dword + //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - //SEG576 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG577 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG581 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG578 [264] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG583 [266] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 - //SEG579 mul16u_error::@10 + //SEG584 mul16u_error::@10 b10: - //SEG580 [265] call print_ln - //SEG581 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG585 [267] call print_ln + //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - //SEG582 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG583 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG587 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG588 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp breturn - //SEG584 mul16u_error::@return + //SEG589 mul16u_error::@return breturn: - //SEG585 [266] return + //SEG590 [268] return rts str: .text "multiply mismatch @" } -//SEG586 muls16u +//SEG591 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition // muls16u(word zeropage($b7) a, word zeropage($b9) b) @@ -7143,20 +7180,20 @@ muls16u: { .label a = $b7 .label b = $b9 .label return_2 = $bb - //SEG587 [267] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + //SEG592 [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b1_from_muls16u !: - //SEG588 [268] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG593 [270] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - //SEG589 [268] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG594 [270] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG590 [268] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG595 [270] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 lda #0 sta m lda #0 @@ -7164,14 +7201,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - //SEG591 [268] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG596 [270] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - //SEG592 [268] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG593 [268] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG597 [270] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG598 [270] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 - //SEG594 muls16u::@2 + //SEG599 muls16u::@2 b2: - //SEG595 [269] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG600 [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -7185,25 +7222,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG596 [270] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG601 [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG597 [271] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG602 [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2_from_b2 lda i cmp a bne b2_from_b2 - //SEG598 [272] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG603 [274] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - //SEG599 [272] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG604 [274] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG600 [272] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG605 [274] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - //SEG601 [272] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG606 [274] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return lda #0 @@ -7211,15 +7248,15 @@ muls16u: { sta return+2 sta return+3 jmp b1 - //SEG602 muls16u::@1 + //SEG607 muls16u::@1 b1: jmp breturn - //SEG603 muls16u::@return + //SEG608 muls16u::@return breturn: - //SEG604 [273] return + //SEG609 [275] return rts } -//SEG605 mulf_init +//SEG610 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label _7 = $e3 @@ -7234,88 +7271,88 @@ mulf_init: { .label x_255 = $54 .label sqr2_lo = $55 .label dir = $59 - //SEG606 [275] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG611 [277] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG607 [275] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG612 [277] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG608 [275] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG613 [277] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG609 [275] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG614 [277] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG610 [275] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG615 [277] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG611 [275] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + //SEG616 [277] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG612 [275] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG617 [277] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG613 [275] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG614 [275] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG615 [275] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG616 [275] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG617 [275] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG618 [277] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG619 [277] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG620 [277] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG621 [277] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG622 [277] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG618 mulf_init::@1 + //SEG623 mulf_init::@1 b1: - //SEG619 [276] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG624 [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG620 [277] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG625 [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _7 - //SEG621 [278] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG626 [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _7 cmp #0 bne b2_from_b1 jmp b3 - //SEG622 mulf_init::@3 + //SEG627 mulf_init::@3 b3: - //SEG623 [279] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG628 [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG624 [280] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG629 [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG625 [281] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + //SEG630 [283] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] b2_from_b1: b2_from_b3: - //SEG626 [281] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - //SEG627 [281] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + //SEG631 [283] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + //SEG632 [283] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy jmp b2 - //SEG628 mulf_init::@2 + //SEG633 mulf_init::@2 b2: - //SEG629 [282] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG634 [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _10 - //SEG630 [283] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuz2 + //SEG635 [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuz2 lda _10 ldy #0 sta (sqr1_lo),y - //SEG631 [284] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG636 [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _11 - //SEG632 [285] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuz2 + //SEG637 [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuz2 lda _11 ldy #0 sta (sqr1_hi),y - //SEG633 [286] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG638 [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG634 [287] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG639 [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -7323,93 +7360,93 @@ mulf_init: { bcc !+ inc sqr+1 !: - //SEG635 [288] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG640 [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG636 [289] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG641 [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@4] + //SEG642 [292] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] b4_from_b2: - //SEG638 [290] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG643 [292] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG639 [290] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + //SEG644 [292] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG640 [290] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + //SEG645 [292] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG641 [290] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuz1=vbuc1 + //SEG646 [292] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b4 - //SEG642 [290] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + //SEG647 [292] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] b4_from_b5: - //SEG643 [290] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - //SEG644 [290] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - //SEG645 [290] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - //SEG646 [290] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + //SEG648 [292] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + //SEG649 [292] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + //SEG650 [292] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + //SEG651 [292] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy jmp b4 - //SEG647 mulf_init::@4 + //SEG652 mulf_init::@4 b4: - //SEG648 [291] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG653 [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG649 [292] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG654 [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG650 [293] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG655 [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG651 [294] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG656 [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG652 [295] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuz1_neq_0_then_la1 + //SEG657 [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b7_from_b4 - //SEG653 [297] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + //SEG658 [299] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] b5_from_b4: - //SEG654 [297] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + //SEG659 [299] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b5 - //SEG655 [296] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + //SEG660 [298] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] b7_from_b4: jmp b7 - //SEG656 mulf_init::@7 + //SEG661 mulf_init::@7 b7: - //SEG657 [297] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + //SEG662 [299] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] b5_from_b7: - //SEG658 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + //SEG663 [299] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy jmp b5 - //SEG659 mulf_init::@5 + //SEG664 mulf_init::@5 b5: - //SEG660 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG665 [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG661 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG666 [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4_from_b5 @@ -7417,49 +7454,49 @@ mulf_init: { cmp #print_cls::@1] + //SEG673 [306] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG669 [304] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG674 [306] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG670 [304] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG675 [306] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG671 [304] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG676 [306] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG672 print_cls::@1 + //SEG677 print_cls::@1 b1: - //SEG673 [305] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG678 [307] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG674 [306] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG679 [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG675 [307] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG680 [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -7467,12 +7504,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG676 print_cls::@return + //SEG681 print_cls::@return breturn: - //SEG677 [308] return + //SEG682 [310] return rts } -//SEG678 File Data +//SEG683 File Data print_hextab: .text "0123456789abcdef" // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // =(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#128 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#128 print_sdword::dw#4 ] ) always clobbers reg byte a -Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#20 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#20 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#134 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#134 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a -Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a -Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a -Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a -Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a +Statement [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) [ print_char_cursor#130 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:202 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:243 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:247 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:263 [ mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a +Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a +Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a +Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a +Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#3 ] ) always clobbers reg byte a +Statement [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#130 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#4 ] ) always clobbers reg byte a +Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#21 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#21 print_sdword::dw#0 ] ) always clobbers reg byte a +Statement [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#137 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#137 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#137 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#137 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265 [ print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] ) always clobbers reg byte a +Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#21 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261 [ mul16u_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265 [ print_char_cursor#21 print_word::w#2 ] ) always clobbers reg byte a +Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107 [ print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] ) always clobbers reg byte a +Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#21 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105 [ print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107 [ mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107 [ print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] ) always clobbers reg byte a +Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#139 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a -Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#21 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113 [ print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] ) always clobbers reg byte a +Statement [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 [ print_char_cursor#86 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:136 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:136 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [128] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#128 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] ) always clobbers reg byte a -Statement [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#20 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] ) always clobbers reg byte a -Statement [133] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_word::w#0 print_char_cursor#130 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#0 print_char_cursor#130 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#0 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [136] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a -Statement [137] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a -Statement [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [141] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [142] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a -Statement [143] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [146] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [147] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a -Statement [148] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [151] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#130 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sword::w#3 ] ) always clobbers reg byte a +Statement [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#21 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#0 ] ) always clobbers reg byte a +Statement [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#21 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sword::w#0 ] ) always clobbers reg byte a +Statement [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a +Statement [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a +Statement [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a +Statement [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a +Statement [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a +Statement [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a +Statement [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a +Statement [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a +Statement [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a +Statement [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a +Statement [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:68 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [159] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [160] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [164] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [165] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [166] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [169] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [170] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [171] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [174] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [178] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [180] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [182] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [186] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [187] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [189] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [191] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a -Statement [195] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a -Statement [196] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [197] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [202] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [203] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [204] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [205] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [207] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [208] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [209] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [210] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [212] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [213] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [214] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [215] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [217] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [218] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [219] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [222] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a +Statement [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a +Statement [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a +Statement [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a +Statement [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a +Statement [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a +Statement [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a +Statement [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a +Statement [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a +Statement [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a +Statement [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a +Statement [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a +Statement [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a +Statement [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a +Statement [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a +Statement [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] -Statement [226] *((const byte*) BGCOL#0) ← (byte) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [237] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [240] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#184 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#184 ] ) always clobbers reg byte a -Statement [246] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [250] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [254] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [258] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [262] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [267] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:206 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [269] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:206 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [271] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:206 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a -Statement [282] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a +Statement [228] *((const byte*) BGCOL#0) ← (byte) 2 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a +Statement [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a +Statement [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#130 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a +Statement [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#130 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a +Statement [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#130 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a +Statement [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] ) always clobbers reg byte a +Statement [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#130 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#130 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#130 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#130 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#130 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#3 ] ) always clobbers reg byte a +Statement [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a +Statement [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a +Statement [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [283] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:76 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [284] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a -Statement [285] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [287] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [289] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [291] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a +Statement [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [292] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [294] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [300] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [301] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [305] *((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 [307] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [307] *((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 [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_char_cursor#218 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#218 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a -Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a -Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a -Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a -Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a -Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a -Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a -Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a -Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a -Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a -Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a -Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a -Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a -Statement [41] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a -Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a -Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a -Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a -Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a -Statement [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ) always clobbers reg byte a -Statement [55] (byte*~) print_char_cursor#177 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#177 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#177 ] ) always clobbers reg byte a -Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:265 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:265 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:200 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:245 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:261 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:200 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:245 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:261 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a -Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a -Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a -Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a -Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#128 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#128 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#128 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#128 print_sdword::dw#4 ] ) always clobbers reg byte a -Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#20 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#20 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#134 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#134 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a -Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a -Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a -Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a -Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a -Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a -Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:255::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:259::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:263::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:247::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:251::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y -Statement [128] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#128 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] ) always clobbers reg byte a -Statement [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#20 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] ) always clobbers reg byte a -Statement [133] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_word::w#0 print_char_cursor#130 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#0 print_char_cursor#130 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#0 print_char_cursor#130 ] ) always clobbers reg byte a -Statement [136] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a -Statement [137] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a -Statement [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [141] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [142] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a -Statement [143] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [146] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [147] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a -Statement [148] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [151] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a -Statement [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_char_cursor#220 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#220 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a +Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a +Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a +Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a +Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a +Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a +Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a +Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a +Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a +Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a +Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a +Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a +Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a +Statement [41] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a +Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a +Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a +Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a +Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a +Statement [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ) always clobbers reg byte a +Statement [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#180 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#180 ] ) always clobbers reg byte a +Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#131 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:241 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:245 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::mul16u_error:234::print_ln:267 [ print_line_cursor#1 print_char_cursor#131 ] ) always clobbers reg byte a +Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#131 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:241 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:245 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::mul16u_error:234::print_ln:267 [ print_line_cursor#1 print_char_cursor#131 ] ) always clobbers reg byte a +Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#130 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:202 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:243 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:247 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:263 [ mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) [ print_char_cursor#130 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:202 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:243 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:247 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:263 [ mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a +Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a +Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a +Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a +Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#3 ] ) always clobbers reg byte a +Statement [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#130 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#4 ] ) always clobbers reg byte a +Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#21 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#21 print_sdword::dw#0 ] ) always clobbers reg byte a +Statement [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#137 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#137 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#137 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#137 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265 [ print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] ) always clobbers reg byte a +Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#21 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261 [ mul16u_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265 [ print_char_cursor#21 print_word::w#2 ] ) always clobbers reg byte a +Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107 [ print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] ) always clobbers reg byte a +Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#21 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105 [ print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107 [ mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107 [ print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] ) always clobbers reg byte a +Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#139 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] ) always clobbers reg byte a +Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#21 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113 [ print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] ) always clobbers reg byte a +Statement [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 [ print_char_cursor#86 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:136 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:136 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] ) always clobbers reg byte y +Statement [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#130 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sword::w#3 ] ) always clobbers reg byte a +Statement [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#21 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#0 ] ) always clobbers reg byte a +Statement [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#21 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sword::w#0 ] ) always clobbers reg byte a +Statement [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a +Statement [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a +Statement [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a +Statement [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a +Statement [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a +Statement [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a +Statement [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a +Statement [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a +Statement [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a +Statement [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a +Statement [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x -Statement [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [159] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [160] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [164] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [165] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [166] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [169] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [170] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [171] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [174] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [178] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [180] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [182] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [186] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [187] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [189] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [191] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a -Statement [195] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a -Statement [196] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [197] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [202] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [203] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [204] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [205] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [207] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [208] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [209] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [210] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [212] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [213] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [214] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [215] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [217] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [218] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [219] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [222] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a -Statement [226] *((const byte*) BGCOL#0) ← (byte) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [237] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [240] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#184 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#184 ] ) always clobbers reg byte a -Statement [246] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [250] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [254] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [258] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [262] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [267] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:206 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [269] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:206 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [271] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:206 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a -Statement [277] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ) always clobbers reg byte a -Statement [282] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a -Statement [283] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [284] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a -Statement [285] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [287] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [289] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [291] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [292] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [294] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [300] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [301] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [305] *((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 [307] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a +Statement [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a +Statement [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a +Statement [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a +Statement [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a +Statement [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a +Statement [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a +Statement [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a +Statement [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a +Statement [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a +Statement [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a +Statement [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a +Statement [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a +Statement [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a +Statement [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a +Statement [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [228] *((const byte*) BGCOL#0) ← (byte) 2 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a +Statement [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a +Statement [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#130 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a +Statement [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#130 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a +Statement [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#130 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a +Statement [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] ) always clobbers reg byte a +Statement [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#130 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#130 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#130 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#130 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#130 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#3 ] ) always clobbers reg byte a +Statement [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a +Statement [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a +Statement [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ) always clobbers reg byte a +Statement [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a +Statement [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a +Statement [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [307] *((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 [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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 [ mul16s_compare::i#12 mul16s_compare::i#1 ] : zp ZP_BYTE:2 , Potential registers zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] : zp ZP_WORD:5 , @@ -7795,9 +7832,9 @@ Potential registers zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print Potential registers zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] : zp ZP_DWORD:17 , Potential registers zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:21 , Potential registers zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:23 , reg byte x , -Potential registers zp ZP_BYTE:24 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] : zp ZP_WORD:25 , -Potential registers zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] : zp ZP_WORD:27 , +Potential registers zp ZP_BYTE:24 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:25 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] : zp ZP_WORD:25 , +Potential registers zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] : zp ZP_WORD:27 , Potential registers zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] : zp ZP_DWORD:29 , Potential registers zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] : zp ZP_WORD:33 , Potential registers zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] : zp ZP_WORD:35 , @@ -7887,53 +7924,53 @@ Uplift Scope [mulf16u] 258.5: zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u: Uplift Scope [print_str] 305.5: zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] Uplift Scope [mul16s] 202: zp ZP_DWORD:108 [ mul16s::return#2 ] 34.33: zp ZP_DWORD:178 [ mul16s::return#0 ] 16.5: zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 9.36: zp ZP_WORD:106 [ mul16s::b#0 ] 7.36: zp ZP_WORD:104 [ mul16s::a#0 ] 4: zp ZP_WORD:170 [ mul16s::$9 ] 4: zp ZP_WORD:172 [ mul16s::$16 ] 4: zp ZP_WORD:174 [ mul16s::$13 ] 4: zp ZP_WORD:176 [ mul16s::$17 ] Uplift Scope [mulf16s] 202: zp ZP_DWORD:120 [ mulf16s::return#2 ] 34.33: zp ZP_DWORD:158 [ mulf16s::return#0 ] 16.5: zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 9.36: zp ZP_WORD:118 [ mulf16s::b#0 ] 7.36: zp ZP_WORD:116 [ mulf16s::a#0 ] 4: zp ZP_WORD:150 [ mulf16s::$9 ] 4: zp ZP_WORD:152 [ mulf16s::$16 ] 4: zp ZP_WORD:154 [ mulf16s::$13 ] 4: zp ZP_WORD:156 [ mulf16s::$17 ] -Uplift Scope [] 241.74: zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] 34.6: zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplift Scope [] 239.66: zp ZP_WORD:25 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] 34.6: zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] Uplift Scope [mulf_init] 45.1: zp ZP_WORD:82 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:76 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:227 [ mulf_init::$7 ] 22: zp ZP_BYTE:228 [ mulf_init::$10 ] 22: zp ZP_BYTE:229 [ mulf_init::$11 ] 20.62: zp ZP_WORD:85 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:77 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:87 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:79 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:90 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_word] 24.67: zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] Uplift Scope [print_sdword] 23: zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] Uplift Scope [print_dword] 20: zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplift Scope [print_sword] 18.5: zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] Uplift Scope [print_byte] 10: zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:144 [ print_byte::$0 ] 4: zp ZP_BYTE:145 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:24 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_sword] 17.67: zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:24 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] Uplift Scope [mul16u_error] 0.57: zp ZP_WORD:211 [ mul16u_error::a#0 ] 0.4: zp ZP_WORD:213 [ mul16u_error::b#0 ] 0.31: zp ZP_DWORD:215 [ mul16u_error::ms#0 ] 0.25: zp ZP_DWORD:219 [ mul16u_error::mn#0 ] 0.21: zp ZP_DWORD:223 [ mul16u_error::mf#0 ] Uplift Scope [mul16s_error] 0.57: zp ZP_WORD:128 [ mul16s_error::a#0 ] 0.4: zp ZP_WORD:130 [ mul16s_error::b#0 ] 0.31: zp ZP_DWORD:132 [ mul16s_error::ms#0 ] 0.25: zp ZP_DWORD:136 [ mul16s_error::mn#0 ] 0.21: zp ZP_DWORD:140 [ mul16s_error::mf#0 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [muls16s] best 548902 combination zp ZP_DWORD:57 [ muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 ] zp ZP_WORD:55 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:61 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:96 [ muls16s::return#2 ] zp ZP_WORD:94 [ muls16s::b#0 ] zp ZP_WORD:92 [ muls16s::a#0 ] -Uplifting [mul16u] best 542902 combination zp ZP_DWORD:47 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:51 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:45 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:43 [ mul16u::b#1 ] zp ZP_DWORD:195 [ mul16u::return#3 ] zp ZP_WORD:41 [ mul16u::b#0 ] zp ZP_DWORD:166 [ mul16u::return#2 ] -Uplifting [muls16u] best 542902 combination zp ZP_DWORD:72 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:70 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:187 [ muls16u::return#2 ] zp ZP_WORD:185 [ muls16u::b#0 ] zp ZP_WORD:183 [ muls16u::a#0 ] -Uplifting [mul16u_compare] best 540802 combination zp ZP_WORD:64 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:66 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:207 [ mul16u_compare::mf#0 ] zp ZP_DWORD:191 [ mul16u_compare::ms#0 ] zp ZP_DWORD:199 [ mul16u_compare::mn#0 ] -Uplifting [mul16s_compare] best 538702 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:124 [ mul16s_compare::mf#0 ] zp ZP_DWORD:100 [ mul16s_compare::ms#0 ] zp ZP_DWORD:112 [ mul16s_compare::mn#0 ] -Uplifting [mulf16u] best 538702 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] zp ZP_DWORD:203 [ mulf16u::return#3 ] zp ZP_DWORD:162 [ mulf16u::return#0 ] zp ZP_DWORD:146 [ mulf16u::return#2 ] -Uplifting [print_str] best 538702 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Uplifting [mul16s] best 538702 combination zp ZP_DWORD:108 [ mul16s::return#2 ] zp ZP_DWORD:178 [ mul16s::return#0 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:106 [ mul16s::b#0 ] zp ZP_WORD:104 [ mul16s::a#0 ] zp ZP_WORD:170 [ mul16s::$9 ] zp ZP_WORD:172 [ mul16s::$16 ] zp ZP_WORD:174 [ mul16s::$13 ] zp ZP_WORD:176 [ mul16s::$17 ] -Uplifting [mulf16s] best 538702 combination zp ZP_DWORD:120 [ mulf16s::return#2 ] zp ZP_DWORD:158 [ mulf16s::return#0 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:118 [ mulf16s::b#0 ] zp ZP_WORD:116 [ mulf16s::a#0 ] zp ZP_WORD:150 [ mulf16s::$9 ] zp ZP_WORD:152 [ mulf16s::$16 ] zp ZP_WORD:154 [ mulf16s::$13 ] zp ZP_WORD:156 [ mulf16s::$17 ] -Uplifting [] best 538702 combination zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplifting [mulf_init] best 538452 combination zp ZP_WORD:82 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$7 ] reg byte a [ mulf_init::$10 ] reg byte a [ mulf_init::$11 ] zp ZP_WORD:85 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:77 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:87 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:79 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [muls16s] best 548919 combination zp ZP_DWORD:57 [ muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 ] zp ZP_WORD:55 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:61 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:96 [ muls16s::return#2 ] zp ZP_WORD:94 [ muls16s::b#0 ] zp ZP_WORD:92 [ muls16s::a#0 ] +Uplifting [mul16u] best 542919 combination zp ZP_DWORD:47 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:51 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:45 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:43 [ mul16u::b#1 ] zp ZP_DWORD:195 [ mul16u::return#3 ] zp ZP_WORD:41 [ mul16u::b#0 ] zp ZP_DWORD:166 [ mul16u::return#2 ] +Uplifting [muls16u] best 542919 combination zp ZP_DWORD:72 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:70 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:187 [ muls16u::return#2 ] zp ZP_WORD:185 [ muls16u::b#0 ] zp ZP_WORD:183 [ muls16u::a#0 ] +Uplifting [mul16u_compare] best 540819 combination zp ZP_WORD:64 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:66 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:207 [ mul16u_compare::mf#0 ] zp ZP_DWORD:191 [ mul16u_compare::ms#0 ] zp ZP_DWORD:199 [ mul16u_compare::mn#0 ] +Uplifting [mul16s_compare] best 538719 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:124 [ mul16s_compare::mf#0 ] zp ZP_DWORD:100 [ mul16s_compare::ms#0 ] zp ZP_DWORD:112 [ mul16s_compare::mn#0 ] +Uplifting [mulf16u] best 538719 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] zp ZP_DWORD:203 [ mulf16u::return#3 ] zp ZP_DWORD:162 [ mulf16u::return#0 ] zp ZP_DWORD:146 [ mulf16u::return#2 ] +Uplifting [print_str] best 538719 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] +Uplifting [mul16s] best 538719 combination zp ZP_DWORD:108 [ mul16s::return#2 ] zp ZP_DWORD:178 [ mul16s::return#0 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:106 [ mul16s::b#0 ] zp ZP_WORD:104 [ mul16s::a#0 ] zp ZP_WORD:170 [ mul16s::$9 ] zp ZP_WORD:172 [ mul16s::$16 ] zp ZP_WORD:174 [ mul16s::$13 ] zp ZP_WORD:176 [ mul16s::$17 ] +Uplifting [mulf16s] best 538719 combination zp ZP_DWORD:120 [ mulf16s::return#2 ] zp ZP_DWORD:158 [ mulf16s::return#0 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:118 [ mulf16s::b#0 ] zp ZP_WORD:116 [ mulf16s::a#0 ] zp ZP_WORD:150 [ mulf16s::$9 ] zp ZP_WORD:152 [ mulf16s::$16 ] zp ZP_WORD:154 [ mulf16s::$13 ] zp ZP_WORD:156 [ mulf16s::$17 ] +Uplifting [] best 538719 combination zp ZP_WORD:25 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplifting [mulf_init] best 538469 combination zp ZP_WORD:82 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$7 ] reg byte a [ mulf_init::$10 ] reg byte a [ mulf_init::$11 ] zp ZP_WORD:85 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:77 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:87 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:79 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [print_cls] best 538452 combination zp ZP_WORD:90 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_word] best 538452 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplifting [print_sdword] best 538452 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] -Uplifting [print_dword] best 538452 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplifting [print_sword] best 538452 combination zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -Uplifting [print_byte] best 538438 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 538423 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [mul16u_error] best 538423 combination zp ZP_WORD:211 [ mul16u_error::a#0 ] zp ZP_WORD:213 [ mul16u_error::b#0 ] zp ZP_DWORD:215 [ mul16u_error::ms#0 ] zp ZP_DWORD:219 [ mul16u_error::mn#0 ] zp ZP_DWORD:223 [ mul16u_error::mf#0 ] -Uplifting [mul16s_error] best 538423 combination zp ZP_WORD:128 [ mul16s_error::a#0 ] zp ZP_WORD:130 [ mul16s_error::b#0 ] zp ZP_DWORD:132 [ mul16s_error::ms#0 ] zp ZP_DWORD:136 [ mul16s_error::mn#0 ] zp ZP_DWORD:140 [ mul16s_error::mf#0 ] -Uplifting [print_ln] best 538423 combination -Uplifting [main] best 538423 combination +Uplifting [print_cls] best 538469 combination zp ZP_WORD:90 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_word] best 538469 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [print_sdword] best 538469 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] +Uplifting [print_dword] best 538469 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Uplifting [print_byte] best 538455 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [print_sword] best 538455 combination zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplifting [print_char] best 538437 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplifting [mul16u_error] best 538437 combination zp ZP_WORD:211 [ mul16u_error::a#0 ] zp ZP_WORD:213 [ mul16u_error::b#0 ] zp ZP_DWORD:215 [ mul16u_error::ms#0 ] zp ZP_DWORD:219 [ mul16u_error::mn#0 ] zp ZP_DWORD:223 [ mul16u_error::mf#0 ] +Uplifting [mul16s_error] best 538437 combination zp ZP_WORD:128 [ mul16s_error::a#0 ] zp ZP_WORD:130 [ mul16s_error::b#0 ] zp ZP_DWORD:132 [ mul16s_error::ms#0 ] zp ZP_DWORD:136 [ mul16s_error::mn#0 ] zp ZP_DWORD:140 [ mul16s_error::mf#0 ] +Uplifting [print_ln] best 538437 combination +Uplifting [main] best 538437 combination Attempting to uplift remaining variables inzp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 538423 combination zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 538437 combination zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] -Uplifting [mul16s_compare] best 538423 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] +Uplifting [mul16s_compare] best 538437 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Uplifting [mul16u_compare] best 538423 combination zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] +Uplifting [mul16u_compare] best 538437 combination zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 538283 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 538297 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 538283 combination zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 538297 combination zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] ] with [ zp ZP_WORD:92 [ muls16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 ] ] with [ zp ZP_WORD:104 [ mul16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 ] ] with [ zp ZP_WORD:116 [ mulf16s::a#0 ] ] - score: 1 @@ -7944,8 +7981,8 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ mul16s_com Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 ] ] with [ zp ZP_WORD:130 [ mul16s_error::b#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] ] with [ zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] with [ zp ZP_DWORD:132 [ mul16s_error::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:211 [ mul16u_error::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp ZP_WORD:211 [ mul16u_error::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] ] with [ zp ZP_DWORD:146 [ mulf16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp ZP_DWORD:158 [ mulf16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] ] with [ zp ZP_WORD:64 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] - score: 1 @@ -7965,7 +8002,7 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:174 [ mul16s:: Coalescing zero page register with common assignment [ zp ZP_DWORD:191 [ mul16u_compare::ms#0 ] ] with [ zp ZP_DWORD:215 [ mul16u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:199 [ mul16u_compare::mn#0 ] ] with [ zp ZP_DWORD:219 [ mul16u_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:207 [ mul16u_compare::mf#0 ] ] with [ zp ZP_DWORD:223 [ mul16u_error::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 ] ] with [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 ] ] with [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 mul16u_error::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 ] ] with [ zp ZP_DWORD:100 [ mul16s_compare::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 ] ] with [ zp ZP_DWORD:191 [ mul16u_compare::ms#0 mul16u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 ] ] with [ zp ZP_DWORD:120 [ mulf16s::return#2 mul16s_compare::mf#0 ] ] - score: 1 @@ -7985,7 +8022,7 @@ Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s:: Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ print_str::str#15 print_str::str#17 print_str::str#0 ] Allocated (was zp ZP_DWORD:13) zp ZP_DWORD:11 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] -Allocated (was zp ZP_WORD:25) zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ] +Allocated (was zp ZP_WORD:25) zp ZP_WORD:15 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] Allocated (was zp ZP_DWORD:29) zp ZP_DWORD:17 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ] Allocated (was zp ZP_WORD:33) zp ZP_WORD:21 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ] Allocated (was zp ZP_WORD:35) zp ZP_WORD:23 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ] @@ -8041,7 +8078,7 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [303] phi from main to print_cls [phi:main->print_cls] + //SEG12 [305] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -8050,7 +8087,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call mulf_init - //SEG16 [274] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [276] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -8059,7 +8096,7 @@ main: { //SEG18 main::@2 b2: //SEG19 [9] call mul16u_compare - //SEG20 [198] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG20 [200] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] mul16u_compare_from_b2: jsr mul16u_compare //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -8084,7 +8121,7 @@ mul16s_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG27 [13] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG27 [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -8104,21 +8141,21 @@ mul16s_compare: { sta a lda #>-$7fff sta a+1 - //SEG32 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#218 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + //SEG32 [14] phi (byte*) print_char_cursor#146 = (byte*~) print_char_cursor#220 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy jmp b1 //SEG33 [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1] b1_from_b8: //SEG34 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy //SEG35 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy //SEG36 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy - //SEG37 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy + //SEG37 [14] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy jmp b1 //SEG38 mul16s_compare::@1 b1: //SEG39 [15] call print_str //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] print_str_from_b1: - //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy + //SEG41 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#146 [phi:mul16s_compare::@1->print_str#0] -- register_copy //SEG42 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b9: - //SEG110 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@9->print_ln#0] -- register_copy + //SEG110 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@9->print_ln#0] -- register_copy //SEG111 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy jsr print_ln jmp b13 //SEG112 mul16s_compare::@13 b13: - //SEG113 [55] (byte*~) print_char_cursor#177 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG113 [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -8305,7 +8342,7 @@ mul16s_compare: { //SEG114 [56] call print_str //SEG115 [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str] print_str_from_b13: - //SEG116 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#177 [phi:mul16s_compare::@13->print_str#0] -- register_copy + //SEG116 [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy //SEG117 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b14: - //SEG122 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@14->print_ln#0] -- register_copy + //SEG122 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@14->print_ln#0] -- register_copy //SEG123 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -8344,7 +8381,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -8367,7 +8404,7 @@ print_str: { //SEG133 [65] 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: - //SEG134 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG134 [65] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#151 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG135 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 //SEG136 print_str::@1 @@ -8384,12 +8421,12 @@ print_str: { rts //SEG140 print_str::@2 b2: - //SEG141 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + //SEG141 [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -8412,7 +8449,7 @@ mul16s_error: { //SEG145 [72] call print_str //SEG146 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] print_str_from_mul16s_error: - //SEG147 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy + //SEG147 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16s_error->print_str#0] -- register_copy //SEG148 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b2: - //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy + //SEG158 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@2->print_str#0] -- register_copy //SEG159 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b4: - //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy + //SEG169 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@4->print_str#0] -- register_copy //SEG170 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b6: - //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy + //SEG180 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@6->print_str#0] -- register_copy //SEG181 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b8: - //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy + //SEG191 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@8->print_str#0] -- register_copy //SEG192 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b10: - //SEG202 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy + //SEG202 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16s_error::@10->print_ln#0] -- register_copy //SEG203 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -8578,8 +8615,8 @@ print_sdword: { //SEG210 [97] call print_char //SEG211 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] print_char_from_b2: - //SEG212 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG213 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG212 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG213 [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b3 @@ -8606,7 +8643,7 @@ print_sdword: { //SEG216 [99] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] b1_from_print_sdword: b1_from_b3: - //SEG217 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy + //SEG217 [99] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#130 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy //SEG218 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@3->print_sdword::@1#1] -- register_copy jmp b1 //SEG219 print_sdword::@1 @@ -8615,7 +8652,7 @@ print_sdword: { //SEG221 [101] call print_dword //SEG222 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] print_dword_from_b1: - //SEG223 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG223 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#137 [phi:print_sdword::@1->print_dword#0] -- register_copy //SEG224 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword jmp breturn @@ -8637,7 +8674,7 @@ print_dword: { //SEG229 [105] call print_word //SEG230 [109] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG231 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy + //SEG231 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#136 [phi:print_dword->print_word#0] -- register_copy //SEG232 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 @@ -8651,7 +8688,7 @@ print_dword: { //SEG235 [107] call print_word //SEG236 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG237 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG237 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_dword::@1->print_word#0] -- register_copy //SEG238 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn @@ -8671,7 +8708,7 @@ print_word: { //SEG243 [111] call print_byte //SEG244 [115] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG245 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy + //SEG245 [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy //SEG246 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 @@ -8683,7 +8720,7 @@ print_word: { //SEG249 [113] call print_byte //SEG250 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG251 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG251 [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#21 [phi:print_word::@1->print_byte#0] -- register_copy //SEG252 [115] 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 @@ -8702,14 +8739,14 @@ print_byte: { lsr lsr lsr - //SEG257 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG257 [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG258 [118] call print_char //SEG259 [123] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG260 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG261 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG260 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy + //SEG261 [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 //SEG262 print_byte::@1 @@ -8717,13 +8754,13 @@ print_byte: { //SEG263 [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - //SEG264 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG264 [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x //SEG265 [121] call print_char //SEG266 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG267 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG268 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG267 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#21 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG268 [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn //SEG269 print_byte::@return @@ -8735,10 +8772,10 @@ print_byte: { // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG272 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG272 [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG273 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG273 [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -8754,25 +8791,56 @@ print_char: { // print_sword(signed word zeropage(3) w) print_sword: { .label w = 3 - //SEG277 [128] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG277 [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG278 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG279 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG278 [129] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG279 print_sword::@3 + b3: //SEG280 [130] call print_char - //SEG281 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG282 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG283 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG281 [123] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG282 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG283 [123] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG284 [131] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG285 [131] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG286 print_sword::@2 + b2: + //SEG287 [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + //SEG288 [133] call print_word + //SEG289 [109] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG290 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG291 [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG292 print_sword::@return + breturn: + //SEG293 [134] return + rts + //SEG294 [135] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG295 print_sword::@1 + b1: + //SEG296 [136] call print_char + //SEG297 [123] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG298 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG299 [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG284 print_sword::@3 - b3: - //SEG285 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG300 print_sword::@4 + b4: + //SEG301 [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -8780,28 +8848,9 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG286 [132] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG287 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG288 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG289 print_sword::@1 - b1: - //SEG290 [133] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - //SEG291 [134] call print_word - //SEG292 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG293 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG294 [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG295 print_sword::@return - breturn: - //SEG296 [135] return - rts + jmp b2_from_b4 } -//SEG297 mulf16s +//SEG302 mulf16s // Fast multiply two signed words to a signed double word result // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zeropage(3) a, signed word zeropage(5) b) @@ -8814,39 +8863,39 @@ mulf16s: { .label return = $11 .label a = 3 .label b = 5 - //SEG298 [136] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + //SEG303 [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG299 [137] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + //SEG304 [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG300 [138] call mulf16u - //SEG301 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG305 [140] call mulf16u + //SEG306 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - //SEG302 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG303 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG307 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG308 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u - //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + //SEG309 [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 jmp b5 - //SEG305 mulf16s::@5 + //SEG310 mulf16s::@5 b5: - //SEG306 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - //SEG307 [141] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + //SEG311 [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + //SEG312 [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b5 jmp b3 - //SEG308 mulf16s::@3 + //SEG313 mulf16s::@3 b3: - //SEG309 [142] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG314 [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG310 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG315 [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -8854,30 +8903,30 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG311 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG316 [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG312 [145] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + //SEG317 [147] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] b1_from_b3: b1_from_b5: - //SEG313 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + //SEG318 [147] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy jmp b1 - //SEG314 mulf16s::@1 + //SEG319 mulf16s::@1 b1: - //SEG315 [146] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG320 [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG316 mulf16s::@4 + //SEG321 mulf16s::@4 b4: - //SEG317 [147] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG322 [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - //SEG318 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG323 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -8885,26 +8934,26 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG319 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG324 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG320 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG325 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - //SEG321 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG326 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 - //SEG322 mulf16s::@2 + //SEG327 mulf16s::@2 b2: - //SEG323 [151] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + //SEG328 [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 jmp breturn - //SEG324 mulf16s::@return + //SEG329 mulf16s::@return breturn: - //SEG325 [152] return + //SEG330 [154] return rts } -//SEG326 mulf16u +//SEG331 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X // mulf16u(word zeropage($15) a, word zeropage($17) b) @@ -8915,17 +8964,17 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - //SEG327 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG332 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG328 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG333 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG329 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG334 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -9018,7 +9067,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG330 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG335 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -9028,12 +9077,12 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG331 mulf16u::@return + //SEG336 mulf16u::@return breturn: - //SEG332 [158] return + //SEG337 [160] return rts } -//SEG333 mul16s +//SEG338 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage(3) a, signed word zeropage(5) b) @@ -9046,21 +9095,21 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - //SEG334 [159] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG339 [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG335 [160] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG340 [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG336 [161] call mul16u - //SEG337 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG341 [163] call mul16u + //SEG342 [178] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG338 [176] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - //SEG339 [176] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 + //SEG343 [178] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + //SEG344 [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -9069,23 +9118,23 @@ mul16s: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG340 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG345 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b5 - //SEG341 mul16s::@5 + //SEG346 mul16s::@5 b5: - //SEG342 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG343 [164] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG347 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG348 [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b5 jmp b3 - //SEG344 mul16s::@3 + //SEG349 mul16s::@3 b3: - //SEG345 [165] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG350 [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG346 [166] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG351 [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -9093,30 +9142,30 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG347 [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG352 [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG348 [168] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] + //SEG353 [170] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] b1_from_b3: b1_from_b5: - //SEG349 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy + //SEG354 [170] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy jmp b1 - //SEG350 mul16s::@1 + //SEG355 mul16s::@1 b1: - //SEG351 [169] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG356 [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG352 mul16s::@4 + //SEG357 mul16s::@4 b4: - //SEG353 [170] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG358 [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - //SEG354 [171] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG359 [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -9124,26 +9173,26 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG355 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG360 [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG356 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG361 [175] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - //SEG357 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG362 [175] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 - //SEG358 mul16s::@2 + //SEG363 mul16s::@2 b2: - //SEG359 [174] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + //SEG364 [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 jmp breturn - //SEG360 mul16s::@return + //SEG365 mul16s::@return breturn: - //SEG361 [175] return + //SEG366 [177] return rts } -//SEG362 mul16u +//SEG367 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($1f) a, word zeropage($1d) b) mul16u: { @@ -9153,42 +9202,42 @@ mul16u: { .label b = $1d .label return = $19 .label b_1 = $17 - //SEG363 [177] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG368 [179] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG364 [177] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG365 [177] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG369 [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG370 [179] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG366 [177] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG371 [179] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG367 mul16u::@1 + //SEG372 mul16u::@1 b1: - //SEG368 [178] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG373 [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG369 mul16u::@return + //SEG374 mul16u::@return breturn: - //SEG370 [179] return + //SEG375 [181] return rts - //SEG371 mul16u::@2 + //SEG376 mul16u::@2 b2: - //SEG372 [180] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG377 [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG373 [181] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG378 [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG374 mul16u::@4 + //SEG379 mul16u::@4 b4: - //SEG375 [182] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG380 [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -9202,29 +9251,29 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG376 [183] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG381 [185] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG377 [183] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG382 [185] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG378 mul16u::@3 + //SEG383 mul16u::@3 b3: - //SEG379 [184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG384 [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG380 [185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG385 [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG381 [177] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG386 [179] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG382 [177] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG383 [177] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG384 [177] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG387 [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG388 [179] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG389 [179] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG385 muls16s +//SEG390 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction // muls16s(signed word zeropage(3) a, signed word zeropage(5) b) @@ -9235,27 +9284,27 @@ muls16s: { .label i = $27 .label a = 3 .label b = 5 - //SEG386 [186] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 + //SEG391 [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 lda a+1 bmi b4_from_muls16s jmp b2 - //SEG387 muls16s::@2 + //SEG392 muls16s::@2 b2: - //SEG388 [187] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 + //SEG393 [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 lda a+1 bmi b1_from_b2 bne !+ lda a beq b1_from_b2 !: - //SEG389 [188] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] + //SEG394 [190] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] b3_from_b2: - //SEG390 [188] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 + //SEG395 [190] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 lda #0 sta j lda #0 sta j+1 - //SEG391 [188] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 + //SEG396 [190] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 lda #0 sta m lda #0 @@ -9263,14 +9312,14 @@ muls16s: { sta m+2 sta m+3 jmp b3 - //SEG392 [188] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG397 [190] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - //SEG393 [188] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG394 [188] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG398 [190] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG399 [190] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 - //SEG395 muls16s::@3 + //SEG400 muls16s::@3 b3: - //SEG396 [189] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG401 [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -9290,26 +9339,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG397 [190] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG402 [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG398 [191] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG403 [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3_from_b3 lda j cmp a bne b3_from_b3 - //SEG399 [192] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] + //SEG404 [194] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] b1_from_b3: b1_from_b4: - //SEG400 [192] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy + //SEG405 [194] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy jmp b1 - //SEG401 [192] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] + //SEG406 [194] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] b1_from_b2: - //SEG402 [192] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 + //SEG407 [194] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 lda #0 sta return lda #0 @@ -9317,21 +9366,21 @@ muls16s: { sta return+2 sta return+3 jmp b1 - //SEG403 muls16s::@1 + //SEG408 muls16s::@1 b1: jmp breturn - //SEG404 muls16s::@return + //SEG409 muls16s::@return breturn: - //SEG405 [193] return + //SEG410 [195] return rts - //SEG406 [194] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] + //SEG411 [196] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] b4_from_muls16s: - //SEG407 [194] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 + //SEG412 [196] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 lda #0 sta i lda #0 sta i+1 - //SEG408 [194] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 + //SEG413 [196] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 lda #0 sta m lda #0 @@ -9339,14 +9388,14 @@ muls16s: { sta m+2 sta m+3 jmp b4 - //SEG409 [194] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] + //SEG414 [196] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] b4_from_b4: - //SEG410 [194] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy - //SEG411 [194] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy + //SEG415 [196] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy + //SEG416 [196] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy jmp b4 - //SEG412 muls16s::@4 + //SEG417 muls16s::@4 b4: - //SEG413 [195] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG418 [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -9366,13 +9415,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG414 [196] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG419 [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG415 [197] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 + //SEG420 [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b4_from_b4 @@ -9381,7 +9430,7 @@ muls16s: { bne b4_from_b4 jmp b1_from_b4 } -//SEG416 mul16u_compare +//SEG421 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $15 @@ -9390,62 +9439,62 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = $29 - //SEG417 [199] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG422 [201] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - //SEG418 [199] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG423 [201] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG419 [199] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG424 [201] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 lda #0 sta b lda #0 sta b+1 - //SEG420 [199] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG425 [201] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 lda #0 sta a lda #0 sta a+1 - //SEG421 [199] phi (byte*) print_char_cursor#139 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG426 [201] phi (byte*) print_char_cursor#142 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG422 [199] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] + //SEG427 [201] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] b1_from_b8: - //SEG423 [199] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy - //SEG424 [199] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy - //SEG425 [199] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy - //SEG426 [199] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy + //SEG428 [201] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy + //SEG429 [201] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy + //SEG430 [201] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy + //SEG431 [201] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy jmp b1 - //SEG427 mul16u_compare::@1 + //SEG432 mul16u_compare::@1 b1: - //SEG428 [200] call print_str - //SEG429 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG433 [202] call print_str + //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - //SEG430 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG431 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG435 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#142 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG432 [201] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG437 [203] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - //SEG433 [201] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 + //SEG438 [203] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG434 [201] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG435 [201] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG439 [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG440 [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG436 [201] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG441 [203] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - //SEG437 [201] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG438 [201] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG439 [201] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG442 [203] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG443 [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG444 [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG440 mul16u_compare::@2 + //SEG445 mul16u_compare::@2 b2: - //SEG441 [202] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -9453,7 +9502,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG442 [203] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 + //SEG447 [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -9461,26 +9510,26 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG443 [204] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - //SEG444 [205] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - //SEG445 [206] call muls16u + //SEG448 [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + //SEG449 [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + //SEG450 [208] call muls16u jsr muls16u - //SEG446 [207] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + //SEG451 [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 jmp b10 - //SEG447 mul16u_compare::@10 + //SEG452 mul16u_compare::@10 b10: - //SEG448 [208] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - //SEG449 [209] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG453 [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + //SEG454 [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG450 [210] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - //SEG451 [211] call mul16u - //SEG452 [176] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] + //SEG455 [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + //SEG456 [213] call mul16u + //SEG457 [178] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] mul16u_from_b10: - //SEG453 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy - //SEG454 [176] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 + //SEG458 [178] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy + //SEG459 [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 lda mul16u.b_1 sta mul16u.mb lda mul16u.b_1+1 @@ -9489,25 +9538,25 @@ mul16u_compare: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG455 [212] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG460 [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b11 - //SEG456 mul16u_compare::@11 + //SEG461 mul16u_compare::@11 b11: - //SEG457 [213] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - //SEG458 [214] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - //SEG459 [215] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - //SEG460 [216] call mulf16u - //SEG461 [153] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] + //SEG462 [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + //SEG463 [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + //SEG464 [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + //SEG465 [218] call mulf16u + //SEG466 [155] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] mulf16u_from_b11: - //SEG462 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy - //SEG463 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy + //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy + //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy jsr mulf16u - //SEG464 [217] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + //SEG469 [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 jmp b12 - //SEG465 mul16u_compare::@12 + //SEG470 mul16u_compare::@12 b12: - //SEG466 [218] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - //SEG467 [219] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG471 [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + //SEG472 [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -9521,24 +9570,24 @@ mul16u_compare: { cmp mf+3 beq b3_from_b12 !: - //SEG468 [220] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] + //SEG473 [222] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] b6_from_b12: jmp b6 - //SEG469 mul16u_compare::@6 + //SEG474 mul16u_compare::@6 b6: - //SEG470 [221] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG475 [223] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - //SEG471 [221] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG476 [223] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG472 [221] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] + //SEG477 [223] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] b3_from_b12: - //SEG473 [221] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG478 [223] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 - //SEG474 mul16u_compare::@3 + //SEG479 mul16u_compare::@3 b3: - //SEG475 [222] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 + //SEG480 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -9552,113 +9601,113 @@ mul16u_compare: { cmp mn+3 beq b15_from_b3 !: - //SEG476 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG481 [226] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - //SEG477 [224] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 + //SEG482 [226] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG478 [223] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] + //SEG483 [225] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] b15_from_b3: jmp b15 - //SEG479 mul16u_compare::@15 + //SEG484 mul16u_compare::@15 b15: - //SEG480 [224] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] + //SEG485 [226] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] b4_from_b15: - //SEG481 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy + //SEG486 [226] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy jmp b4 - //SEG482 mul16u_compare::@4 + //SEG487 mul16u_compare::@4 b4: - //SEG483 [225] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG488 [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b7 - //SEG484 mul16u_compare::@7 + //SEG489 mul16u_compare::@7 b7: - //SEG485 [226] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG490 [228] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG486 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG491 [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG487 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - //SEG488 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - //SEG489 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - //SEG490 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - //SEG491 [232] call mul16u_error - //SEG492 [244] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] + //SEG492 [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + //SEG493 [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + //SEG494 [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + //SEG495 [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + //SEG496 [234] call mul16u_error + //SEG497 [246] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] mul16u_error_from_b7: jsr mul16u_error jmp breturn - //SEG493 mul16u_compare::@return + //SEG498 mul16u_compare::@return breturn: - //SEG494 [233] return + //SEG499 [235] return rts - //SEG495 mul16u_compare::@5 + //SEG500 mul16u_compare::@5 b5: - //SEG496 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG501 [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - //SEG497 [235] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG502 [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b2_from_b5 jmp b8 - //SEG498 mul16u_compare::@8 + //SEG503 mul16u_compare::@8 b8: - //SEG499 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG504 [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG500 [237] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG505 [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b8 - //SEG501 [238] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] + //SEG506 [240] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] b9_from_b8: jmp b9 - //SEG502 mul16u_compare::@9 + //SEG507 mul16u_compare::@9 b9: - //SEG503 [239] call print_ln - //SEG504 [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] + //SEG508 [241] call print_ln + //SEG509 [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] print_ln_from_b9: - //SEG505 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@9->print_ln#0] -- register_copy - //SEG506 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 + //SEG510 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@9->print_ln#0] -- register_copy + //SEG511 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b13 - //SEG507 mul16u_compare::@13 + //SEG512 mul16u_compare::@13 b13: - //SEG508 [240] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG513 [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG509 [241] call print_str - //SEG510 [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] + //SEG514 [243] call print_str + //SEG515 [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] print_str_from_b13: - //SEG511 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#184 [phi:mul16u_compare::@13->print_str#0] -- register_copy - //SEG512 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 + //SEG516 [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy + //SEG517 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG513 [242] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] + //SEG518 [244] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] b14_from_b13: jmp b14 - //SEG514 mul16u_compare::@14 + //SEG519 mul16u_compare::@14 b14: - //SEG515 [243] call print_ln - //SEG516 [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] + //SEG520 [245] call print_ln + //SEG521 [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] print_ln_from_b14: - //SEG517 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@14->print_ln#0] -- register_copy - //SEG518 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy + //SEG522 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@14->print_ln#0] -- register_copy + //SEG523 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy jsr print_ln jmp breturn str1: .text "word multiply results match!@" } -//SEG519 mul16u_error +//SEG524 mul16u_error // mul16u_error(word zeropage(3) a, word zeropage($17) b, dword zeropage($b) ms, dword zeropage($19) mn, dword zeropage($11) mf) mul16u_error: { .label a = 3 @@ -9666,99 +9715,99 @@ mul16u_error: { .label ms = $b .label mn = $19 .label mf = $11 - //SEG520 [245] call print_str - //SEG521 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG525 [247] call print_str + //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - //SEG522 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG523 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG527 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16u_error->print_str#0] -- register_copy + //SEG528 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG524 mul16u_error::@1 + //SEG529 mul16u_error::@1 b1: - //SEG525 [246] (word) print_word::w#3 ← (word) mul16u_error::a#0 - //SEG526 [247] call print_word - //SEG527 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG530 [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 + //SEG531 [249] call print_word + //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - //SEG528 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG529 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG533 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG530 [248] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG535 [250] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 - //SEG531 mul16u_error::@2 + //SEG536 mul16u_error::@2 b2: - //SEG532 [249] call print_str - //SEG533 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG537 [251] call print_str + //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - //SEG534 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG535 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG539 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG536 mul16u_error::@3 + //SEG541 mul16u_error::@3 b3: - //SEG537 [250] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG542 [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG538 [251] call print_word - //SEG539 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG543 [253] call print_word + //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - //SEG540 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG541 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG545 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG542 [252] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG547 [254] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 - //SEG543 mul16u_error::@4 + //SEG548 mul16u_error::@4 b4: - //SEG544 [253] call print_str - //SEG545 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG549 [255] call print_str + //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - //SEG546 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG547 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG551 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG548 mul16u_error::@5 + //SEG553 mul16u_error::@5 b5: - //SEG549 [254] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - //SEG550 [255] call print_dword - //SEG551 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG554 [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + //SEG555 [257] call print_dword + //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - //SEG552 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG553 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG557 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG554 [256] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG559 [258] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 - //SEG555 mul16u_error::@6 + //SEG560 mul16u_error::@6 b6: - //SEG556 [257] call print_str - //SEG557 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG561 [259] call print_str + //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - //SEG558 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG559 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG563 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG560 mul16u_error::@7 + //SEG565 mul16u_error::@7 b7: - //SEG561 [258] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG566 [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -9767,31 +9816,31 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG562 [259] call print_dword - //SEG563 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG567 [261] call print_dword + //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - //SEG564 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG565 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG569 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG566 [260] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG571 [262] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 - //SEG567 mul16u_error::@8 + //SEG572 mul16u_error::@8 b8: - //SEG568 [261] call print_str - //SEG569 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG573 [263] call print_str + //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - //SEG570 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG571 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG575 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG572 mul16u_error::@9 + //SEG577 mul16u_error::@9 b9: - //SEG573 [262] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG578 [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -9800,35 +9849,35 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG574 [263] call print_dword - //SEG575 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG579 [265] call print_dword + //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - //SEG576 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG577 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG581 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG578 [264] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG583 [266] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 - //SEG579 mul16u_error::@10 + //SEG584 mul16u_error::@10 b10: - //SEG580 [265] call print_ln - //SEG581 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG585 [267] call print_ln + //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - //SEG582 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG583 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG587 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG588 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp breturn - //SEG584 mul16u_error::@return + //SEG589 mul16u_error::@return breturn: - //SEG585 [266] return + //SEG590 [268] return rts str: .text "multiply mismatch @" } -//SEG586 muls16u +//SEG591 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition // muls16u(word zeropage($15) a, word zeropage($17) b) @@ -9838,20 +9887,20 @@ muls16u: { .label i = $2a .label a = $15 .label b = $17 - //SEG587 [267] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + //SEG592 [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b1_from_muls16u !: - //SEG588 [268] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG593 [270] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - //SEG589 [268] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG594 [270] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG590 [268] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG595 [270] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 lda #0 sta m lda #0 @@ -9859,14 +9908,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - //SEG591 [268] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG596 [270] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - //SEG592 [268] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG593 [268] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG597 [270] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG598 [270] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 - //SEG594 muls16u::@2 + //SEG599 muls16u::@2 b2: - //SEG595 [269] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG600 [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -9880,25 +9929,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG596 [270] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG601 [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG597 [271] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG602 [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2_from_b2 lda i cmp a bne b2_from_b2 - //SEG598 [272] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG603 [274] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - //SEG599 [272] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG604 [274] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG600 [272] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG605 [274] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - //SEG601 [272] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG606 [274] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return lda #0 @@ -9906,15 +9955,15 @@ muls16u: { sta return+2 sta return+3 jmp b1 - //SEG602 muls16u::@1 + //SEG607 muls16u::@1 b1: jmp breturn - //SEG603 muls16u::@return + //SEG608 muls16u::@return breturn: - //SEG604 [273] return + //SEG609 [275] return rts } -//SEG605 mulf_init +//SEG610 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = $2e @@ -9924,81 +9973,81 @@ mulf_init: { .label sqr2_hi = $35 .label sqr2_lo = $33 .label dir = $37 - //SEG606 [275] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG611 [277] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG607 [275] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG612 [277] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG608 [275] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG613 [277] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG609 [275] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG614 [277] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG610 [275] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG615 [277] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG611 [275] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG616 [277] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG612 [275] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG617 [277] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG613 [275] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG614 [275] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG615 [275] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG616 [275] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG617 [275] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG618 [277] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG619 [277] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG620 [277] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG621 [277] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG622 [277] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG618 mulf_init::@1 + //SEG623 mulf_init::@1 b1: - //SEG619 [276] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG624 [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG620 [277] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG625 [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG621 [278] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG626 [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b3 - //SEG622 mulf_init::@3 + //SEG627 mulf_init::@3 b3: - //SEG623 [279] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG628 [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG624 [280] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG629 [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG625 [281] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + //SEG630 [283] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] b2_from_b1: b2_from_b3: - //SEG626 [281] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - //SEG627 [281] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + //SEG631 [283] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + //SEG632 [283] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy jmp b2 - //SEG628 mulf_init::@2 + //SEG633 mulf_init::@2 b2: - //SEG629 [282] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG634 [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG630 [283] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa + //SEG635 [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG631 [284] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG636 [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG632 [285] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa + //SEG637 [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG633 [286] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG638 [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG634 [287] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG639 [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -10006,89 +10055,89 @@ mulf_init: { bcc !+ inc sqr+1 !: - //SEG635 [288] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG640 [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG636 [289] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG641 [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@4] + //SEG642 [292] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] b4_from_b2: - //SEG638 [290] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG643 [292] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG639 [290] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + //SEG644 [292] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG640 [290] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + //SEG645 [292] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG641 [290] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 + //SEG646 [292] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 ldx #-1 jmp b4 - //SEG642 [290] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + //SEG647 [292] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] b4_from_b5: - //SEG643 [290] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - //SEG644 [290] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - //SEG645 [290] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - //SEG646 [290] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + //SEG648 [292] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + //SEG649 [292] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + //SEG650 [292] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + //SEG651 [292] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy jmp b4 - //SEG647 mulf_init::@4 + //SEG652 mulf_init::@4 b4: - //SEG648 [291] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG653 [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG649 [292] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG654 [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG650 [293] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG655 [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG651 [294] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG656 [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG652 [295] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 + //SEG657 [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 cpx #0 bne b7_from_b4 - //SEG653 [297] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + //SEG658 [299] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] b5_from_b4: - //SEG654 [297] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + //SEG659 [299] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b5 - //SEG655 [296] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + //SEG660 [298] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] b7_from_b4: jmp b7 - //SEG656 mulf_init::@7 + //SEG661 mulf_init::@7 b7: - //SEG657 [297] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + //SEG662 [299] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] b5_from_b7: - //SEG658 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + //SEG663 [299] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy jmp b5 - //SEG659 mulf_init::@5 + //SEG664 mulf_init::@5 b5: - //SEG660 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG665 [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG661 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG666 [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4_from_b5 @@ -10096,49 +10145,49 @@ mulf_init: { cmp #print_cls::@1] + //SEG673 [306] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG669 [304] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG674 [306] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG670 [304] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG675 [306] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG671 [304] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG676 [306] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG672 print_cls::@1 + //SEG677 print_cls::@1 b1: - //SEG673 [305] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG678 [307] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG674 [306] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG679 [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG675 [307] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG680 [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -10146,12 +10195,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG676 print_cls::@return + //SEG681 print_cls::@return breturn: - //SEG677 [308] return + //SEG682 [310] return rts } -//SEG678 File Data +//SEG683 File Data print_hextab: .text "0123456789abcdef" // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // print_cls] + //SEG12 [305] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 main::@1 //SEG15 [7] call mulf_init - //SEG16 [274] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [276] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG18 main::@2 //SEG19 [9] call mul16u_compare - //SEG20 [198] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG20 [200] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] jsr mul16u_compare //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG22 main::@3 @@ -11123,7 +11176,7 @@ mul16s_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG27 [13] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG27 [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -11142,17 +11195,17 @@ mul16s_compare: { sta a lda #>-$7fff sta a+1 - //SEG32 [14] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#218 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + //SEG32 [14] phi (byte*) print_char_cursor#146 = (byte*~) print_char_cursor#220 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy //SEG33 [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1] //SEG34 [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy //SEG35 [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy //SEG36 [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy - //SEG37 [14] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy + //SEG37 [14] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy //SEG38 mul16s_compare::@1 b1: //SEG39 [15] call print_str //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] - //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy + //SEG41 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#146 [phi:mul16s_compare::@1->print_str#0] -- register_copy //SEG42 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - //SEG110 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@9->print_ln#0] -- register_copy + //SEG110 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@9->print_ln#0] -- register_copy //SEG111 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy jsr print_ln //SEG112 mul16s_compare::@13 - //SEG113 [55] (byte*~) print_char_cursor#177 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG113 [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG114 [56] call print_str //SEG115 [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str] - //SEG116 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#177 [phi:mul16s_compare::@13->print_str#0] -- register_copy + //SEG116 [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy //SEG117 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - //SEG122 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16s_compare::@14->print_ln#0] -- register_copy + //SEG122 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@14->print_ln#0] -- register_copy //SEG123 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy jsr print_ln rts @@ -11337,7 +11390,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG129 [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -11356,7 +11409,7 @@ print_ln: { print_str: { .label str = 9 //SEG133 [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG134 [65] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#148 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG134 [65] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#151 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG135 [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy //SEG136 print_str::@1 b1: @@ -11370,11 +11423,11 @@ print_str: { rts //SEG140 print_str::@2 b2: - //SEG141 [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + //SEG141 [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -11396,7 +11449,7 @@ mul16s_error: { .label mf = $11 //SEG145 [72] call print_str //SEG146 [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] - //SEG147 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16s_error->print_str#0] -- register_copy + //SEG147 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16s_error->print_str#0] -- register_copy //SEG148 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy + //SEG158 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@2->print_str#0] -- register_copy //SEG159 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy + //SEG169 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@4->print_str#0] -- register_copy //SEG170 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy + //SEG180 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@6->print_str#0] -- register_copy //SEG181 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy + //SEG191 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@8->print_str#0] -- register_copy //SEG192 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - //SEG202 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16s_error::@10->print_ln#0] -- register_copy + //SEG202 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16s_error::@10->print_ln#0] -- register_copy //SEG203 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln //SEG204 mul16s_error::@return @@ -11521,8 +11574,8 @@ print_sdword: { //SEG209 print_sdword::@2 //SEG210 [97] call print_char //SEG211 [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - //SEG212 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sdword::@2->print_char#0] -- register_copy - //SEG213 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG212 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sdword::@2->print_char#0] -- register_copy + //SEG213 [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char //SEG214 print_sdword::@3 @@ -11545,14 +11598,14 @@ print_sdword: { adc #0 sta dw+3 //SEG216 [99] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] - //SEG217 [99] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#128 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy + //SEG217 [99] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#130 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy //SEG218 [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@3->print_sdword::@1#1] -- register_copy //SEG219 print_sdword::@1 b1: //SEG220 [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 //SEG221 [101] call print_dword //SEG222 [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - //SEG223 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#134 [phi:print_sdword::@1->print_dword#0] -- register_copy + //SEG223 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#137 [phi:print_sdword::@1->print_dword#0] -- register_copy //SEG224 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy jsr print_dword //SEG225 print_sdword::@return @@ -11571,7 +11624,7 @@ print_dword: { sta print_word.w+1 //SEG229 [105] call print_word //SEG230 [109] phi from print_dword to print_word [phi:print_dword->print_word] - //SEG231 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#133 [phi:print_dword->print_word#0] -- register_copy + //SEG231 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#136 [phi:print_dword->print_word#0] -- register_copy //SEG232 [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word //SEG233 print_dword::@1 @@ -11582,7 +11635,7 @@ print_dword: { sta print_word.w+1 //SEG235 [107] call print_word //SEG236 [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - //SEG237 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#20 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG237 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_dword::@1->print_word#0] -- register_copy //SEG238 [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word //SEG239 print_dword::@return @@ -11599,7 +11652,7 @@ print_word: { tax //SEG243 [111] call print_byte //SEG244 [115] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG245 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#132 [phi:print_word->print_byte#0] -- register_copy + //SEG245 [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy //SEG246 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte //SEG247 print_word::@1 @@ -11608,7 +11661,7 @@ print_word: { tax //SEG249 [113] call print_byte //SEG250 [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG251 [115] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#20 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG251 [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#21 [phi:print_word::@1->print_byte#0] -- register_copy //SEG252 [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte //SEG253 print_word::@return @@ -11625,24 +11678,24 @@ print_byte: { lsr lsr lsr - //SEG257 [117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG257 [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG258 [118] call print_char //SEG259 [123] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG260 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG261 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + //SEG260 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy + //SEG261 [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char //SEG262 print_byte::@1 //SEG263 [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - //SEG264 [120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG264 [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x //SEG265 [121] call print_char //SEG266 [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG267 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#20 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG268 [123] phi (byte) print_char::ch#4 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG267 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#21 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG268 [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char //SEG269 print_byte::@return //SEG270 [122] return @@ -11652,10 +11705,10 @@ print_byte: { // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG272 [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG272 [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG273 [125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG273 [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -11669,19 +11722,41 @@ print_char: { // print_sword(signed word zeropage(3) w) print_sword: { .label w = 3 - //SEG277 [128] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG277 [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG278 [129] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG279 print_sword::@2 + bmi b1 + //SEG278 [129] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG279 print_sword::@3 //SEG280 [130] call print_char - //SEG281 [123] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG282 [123] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#128 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG283 [123] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG281 [123] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG282 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG283 [123] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG284 [131] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG285 [131] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG286 print_sword::@2 + b2: + //SEG287 [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + //SEG288 [133] call print_word + //SEG289 [109] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + //SEG290 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG291 [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + //SEG292 print_sword::@return + //SEG293 [134] return + rts + //SEG294 [135] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG295 print_sword::@1 + b1: + //SEG296 [136] call print_char + //SEG297 [123] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG298 [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG299 [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG284 print_sword::@3 - //SEG285 [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + //SEG300 print_sword::@4 + //SEG301 [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -11689,22 +11764,9 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG286 [132] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG287 [132] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#128 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG288 [132] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG289 print_sword::@1 - b1: - //SEG290 [133] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - //SEG291 [134] call print_word - //SEG292 [109] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG293 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG294 [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - //SEG295 print_sword::@return - //SEG296 [135] return - rts + jmp b2 } -//SEG297 mulf16s +//SEG302 mulf16s // Fast multiply two signed words to a signed double word result // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zeropage(3) a, signed word zeropage(5) b) @@ -11717,34 +11779,34 @@ mulf16s: { .label return = $11 .label a = 3 .label b = 5 - //SEG298 [136] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + //SEG303 [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG299 [137] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + //SEG304 [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG300 [138] call mulf16u - //SEG301 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] - //SEG302 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG303 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG305 [140] call mulf16u + //SEG306 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG307 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG308 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u - //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 - //SEG305 mulf16s::@5 - //SEG306 [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - //SEG307 [141] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + //SEG309 [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + //SEG310 mulf16s::@5 + //SEG311 [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + //SEG312 [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1 - //SEG308 mulf16s::@3 - //SEG309 [142] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG313 mulf16s::@3 + //SEG314 [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG310 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG315 [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11752,25 +11814,25 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG311 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG316 [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG312 [145] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] - //SEG313 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy - //SEG314 mulf16s::@1 + //SEG317 [147] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + //SEG318 [147] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + //SEG319 mulf16s::@1 b1: - //SEG315 [146] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG320 [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2 - //SEG316 mulf16s::@4 - //SEG317 [147] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG321 mulf16s::@4 + //SEG322 [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - //SEG318 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG323 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -11778,21 +11840,21 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG319 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG324 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG320 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] - //SEG321 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy - //SEG322 mulf16s::@2 + //SEG325 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG326 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG327 mulf16s::@2 b2: - //SEG323 [151] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 - //SEG324 mulf16s::@return - //SEG325 [152] return + //SEG328 [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + //SEG329 mulf16s::@return + //SEG330 [154] return rts } -//SEG326 mulf16u +//SEG331 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X // mulf16u(word zeropage($15) a, word zeropage($17) b) @@ -11803,17 +11865,17 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - //SEG327 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG332 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG328 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG333 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG329 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG334 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -11906,7 +11968,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG330 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG335 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -11915,11 +11977,11 @@ mulf16u: { sta return+2 lda memR+3 sta return+3 - //SEG331 mulf16u::@return - //SEG332 [158] return + //SEG336 mulf16u::@return + //SEG337 [160] return rts } -//SEG333 mul16s +//SEG338 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage(3) a, signed word zeropage(5) b) @@ -11932,20 +11994,20 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - //SEG334 [159] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG339 [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG335 [160] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG340 [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG336 [161] call mul16u - //SEG337 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] - //SEG338 [176] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - //SEG339 [176] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 + //SEG341 [163] call mul16u + //SEG342 [178] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG343 [178] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + //SEG344 [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -11954,19 +12016,19 @@ mul16s: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG340 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG341 mul16s::@5 - //SEG342 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG343 [164] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG345 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG346 mul16s::@5 + //SEG347 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG348 [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1 - //SEG344 mul16s::@3 - //SEG345 [165] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG349 mul16s::@3 + //SEG350 [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG346 [166] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG351 [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11974,25 +12036,25 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG347 [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG352 [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG348 [168] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] - //SEG349 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy - //SEG350 mul16s::@1 + //SEG353 [170] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] + //SEG354 [170] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy + //SEG355 mul16s::@1 b1: - //SEG351 [169] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG356 [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2 - //SEG352 mul16s::@4 - //SEG353 [170] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG357 mul16s::@4 + //SEG358 [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - //SEG354 [171] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG359 [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -12000,21 +12062,21 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG355 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG360 [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG356 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] - //SEG357 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy - //SEG358 mul16s::@2 + //SEG361 [175] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG362 [175] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG363 mul16s::@2 b2: - //SEG359 [174] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 - //SEG360 mul16s::@return - //SEG361 [175] return + //SEG364 [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + //SEG365 mul16s::@return + //SEG366 [177] return rts } -//SEG362 mul16u +//SEG367 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($1f) a, word zeropage($1d) b) mul16u: { @@ -12024,35 +12086,35 @@ mul16u: { .label b = $1d .label return = $19 .label b_1 = $17 - //SEG363 [177] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG364 [177] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG365 [177] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG368 [179] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG369 [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG370 [179] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res sta res+1 sta res+2 sta res+3 - //SEG366 [177] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG367 mul16u::@1 + //SEG371 [179] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG372 mul16u::@1 b1: - //SEG368 [178] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG373 [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 - //SEG369 mul16u::@return - //SEG370 [179] return + //SEG374 mul16u::@return + //SEG375 [181] return rts - //SEG371 mul16u::@2 + //SEG376 mul16u::@2 b2: - //SEG372 [180] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG377 [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG373 [181] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG378 [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG374 mul16u::@4 - //SEG375 [182] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG379 mul16u::@4 + //SEG380 [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -12066,25 +12128,25 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG376 [183] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] - //SEG377 [183] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy - //SEG378 mul16u::@3 + //SEG381 [185] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG382 [185] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG383 mul16u::@3 b3: - //SEG379 [184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG384 [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG380 [185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG385 [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG381 [177] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] - //SEG382 [177] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG383 [177] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG384 [177] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG386 [179] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG387 [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG388 [179] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG389 [179] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG385 muls16s +//SEG390 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction // muls16s(signed word zeropage(3) a, signed word zeropage(5) b) @@ -12095,32 +12157,32 @@ muls16s: { .label i = $27 .label a = 3 .label b = 5 - //SEG386 [186] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 + //SEG391 [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 lda a+1 bmi b6 - //SEG387 muls16s::@2 - //SEG388 [187] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 + //SEG392 muls16s::@2 + //SEG393 [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 bmi b5 bne !+ lda a beq b5 !: - //SEG389 [188] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] - //SEG390 [188] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 + //SEG394 [190] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] + //SEG395 [190] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 lda #0 sta j sta j+1 - //SEG391 [188] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 + //SEG396 [190] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 sta m sta m+1 sta m+2 sta m+3 - //SEG392 [188] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] - //SEG393 [188] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG394 [188] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy - //SEG395 muls16s::@3 + //SEG397 [190] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG398 [190] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG399 [190] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG400 muls16s::@3 b3: - //SEG396 [189] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG401 [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -12140,50 +12202,50 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG397 [190] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG402 [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG398 [191] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG403 [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3 lda j cmp a bne b3 - //SEG399 [192] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] - //SEG400 [192] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy + //SEG404 [194] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] + //SEG405 [194] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy rts - //SEG401 [192] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] + //SEG406 [194] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] b5: - //SEG402 [192] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 + //SEG407 [194] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 lda #0 sta return sta return+1 sta return+2 sta return+3 - //SEG403 muls16s::@1 - //SEG404 muls16s::@return - //SEG405 [193] return + //SEG408 muls16s::@1 + //SEG409 muls16s::@return + //SEG410 [195] return rts - //SEG406 [194] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] + //SEG411 [196] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] b6: - //SEG407 [194] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 + //SEG412 [196] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 lda #0 sta i sta i+1 - //SEG408 [194] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 + //SEG413 [196] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 sta m sta m+1 sta m+2 sta m+3 - //SEG409 [194] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] - //SEG410 [194] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy - //SEG411 [194] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy - //SEG412 muls16s::@4 + //SEG414 [196] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] + //SEG415 [196] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy + //SEG416 [196] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy + //SEG417 muls16s::@4 b4: - //SEG413 [195] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG418 [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -12203,13 +12265,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG414 [196] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG419 [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG415 [197] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 + //SEG420 [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b4 @@ -12218,7 +12280,7 @@ muls16s: { bne b4 rts } -//SEG416 mul16u_compare +//SEG421 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $15 @@ -12227,49 +12289,49 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = $29 - //SEG417 [199] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] - //SEG418 [199] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG422 [201] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG423 [201] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG419 [199] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG424 [201] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 sta b sta b+1 - //SEG420 [199] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG425 [201] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 sta a sta a+1 - //SEG421 [199] phi (byte*) print_char_cursor#139 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG426 [201] phi (byte*) print_char_cursor#142 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG422 [199] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] - //SEG423 [199] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy - //SEG424 [199] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy - //SEG425 [199] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy - //SEG426 [199] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy - //SEG427 mul16u_compare::@1 + //SEG427 [201] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] + //SEG428 [201] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy + //SEG429 [201] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy + //SEG430 [201] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy + //SEG431 [201] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy + //SEG432 mul16u_compare::@1 b1: - //SEG428 [200] call print_str - //SEG429 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] - //SEG430 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG431 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG433 [202] call print_str + //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG435 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#142 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG432 [201] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] - //SEG433 [201] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 + //SEG437 [203] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG438 [203] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG434 [201] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG435 [201] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy - //SEG436 [201] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] - //SEG437 [201] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG438 [201] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG439 [201] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy - //SEG440 mul16u_compare::@2 + //SEG439 [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG440 [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG441 [203] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG442 [203] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG443 [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG444 [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG445 mul16u_compare::@2 b2: - //SEG441 [202] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -12277,7 +12339,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG442 [203] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 + //SEG447 [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -12285,23 +12347,23 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG443 [204] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - //SEG444 [205] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - //SEG445 [206] call muls16u + //SEG448 [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + //SEG449 [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + //SEG450 [208] call muls16u jsr muls16u - //SEG446 [207] (dword) muls16u::return#2 ← (dword) muls16u::return#0 - //SEG447 mul16u_compare::@10 - //SEG448 [208] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - //SEG449 [209] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG451 [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + //SEG452 mul16u_compare::@10 + //SEG453 [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + //SEG454 [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG450 [210] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - //SEG451 [211] call mul16u - //SEG452 [176] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] - //SEG453 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy - //SEG454 [176] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 + //SEG455 [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + //SEG456 [213] call mul16u + //SEG457 [178] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] + //SEG458 [178] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy + //SEG459 [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 lda mul16u.b_1 sta mul16u.mb lda mul16u.b_1+1 @@ -12310,20 +12372,20 @@ mul16u_compare: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG455 [212] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG456 mul16u_compare::@11 - //SEG457 [213] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - //SEG458 [214] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - //SEG459 [215] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - //SEG460 [216] call mulf16u - //SEG461 [153] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] - //SEG462 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy - //SEG463 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy + //SEG460 [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG461 mul16u_compare::@11 + //SEG462 [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + //SEG463 [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + //SEG464 [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + //SEG465 [218] call mulf16u + //SEG466 [155] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] + //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy + //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy jsr mulf16u - //SEG464 [217] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 - //SEG465 mul16u_compare::@12 - //SEG466 [218] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - //SEG467 [219] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG469 [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + //SEG470 mul16u_compare::@12 + //SEG471 [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + //SEG472 [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -12337,19 +12399,19 @@ mul16u_compare: { cmp mf+3 beq b6 !: - //SEG468 [220] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] - //SEG469 mul16u_compare::@6 - //SEG470 [221] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] - //SEG471 [221] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG473 [222] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] + //SEG474 mul16u_compare::@6 + //SEG475 [223] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG476 [223] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG472 [221] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] + //SEG477 [223] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] b6: - //SEG473 [221] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG478 [223] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 - //SEG474 mul16u_compare::@3 + //SEG479 mul16u_compare::@3 b3: - //SEG475 [222] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 + //SEG480 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -12363,92 +12425,92 @@ mul16u_compare: { cmp mn+3 beq b4 !: - //SEG476 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] - //SEG477 [224] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 + //SEG481 [226] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG482 [226] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG478 [223] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] - //SEG479 mul16u_compare::@15 - //SEG480 [224] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] - //SEG481 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy - //SEG482 mul16u_compare::@4 + //SEG483 [225] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] + //SEG484 mul16u_compare::@15 + //SEG485 [226] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] + //SEG486 [226] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy + //SEG487 mul16u_compare::@4 b4: - //SEG483 [225] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG488 [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG484 mul16u_compare::@7 - //SEG485 [226] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG489 mul16u_compare::@7 + //SEG490 [228] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG486 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG491 [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG487 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - //SEG488 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - //SEG489 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - //SEG490 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - //SEG491 [232] call mul16u_error - //SEG492 [244] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] + //SEG492 [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + //SEG493 [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + //SEG494 [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + //SEG495 [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + //SEG496 [234] call mul16u_error + //SEG497 [246] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] jsr mul16u_error - //SEG493 mul16u_compare::@return - //SEG494 [233] return + //SEG498 mul16u_compare::@return + //SEG499 [235] return rts - //SEG495 mul16u_compare::@5 + //SEG500 mul16u_compare::@5 b5: - //SEG496 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG501 [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - //SEG497 [235] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG502 [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 beq !b2+ jmp b2 !b2: - //SEG498 mul16u_compare::@8 - //SEG499 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG503 mul16u_compare::@8 + //SEG504 [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG500 [237] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG505 [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i beq !b1+ jmp b1 !b1: - //SEG501 [238] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] - //SEG502 mul16u_compare::@9 - //SEG503 [239] call print_ln - //SEG504 [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] - //SEG505 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@9->print_ln#0] -- register_copy - //SEG506 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 + //SEG506 [240] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] + //SEG507 mul16u_compare::@9 + //SEG508 [241] call print_ln + //SEG509 [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] + //SEG510 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@9->print_ln#0] -- register_copy + //SEG511 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG507 mul16u_compare::@13 - //SEG508 [240] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG512 mul16u_compare::@13 + //SEG513 [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG509 [241] call print_str - //SEG510 [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] - //SEG511 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#184 [phi:mul16u_compare::@13->print_str#0] -- register_copy - //SEG512 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 + //SEG514 [243] call print_str + //SEG515 [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] + //SEG516 [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy + //SEG517 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG513 [242] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] - //SEG514 mul16u_compare::@14 - //SEG515 [243] call print_ln - //SEG516 [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] - //SEG517 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@14->print_ln#0] -- register_copy - //SEG518 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy + //SEG518 [244] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] + //SEG519 mul16u_compare::@14 + //SEG520 [245] call print_ln + //SEG521 [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] + //SEG522 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@14->print_ln#0] -- register_copy + //SEG523 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy jsr print_ln rts str1: .text "word multiply results match!@" } -//SEG519 mul16u_error +//SEG524 mul16u_error // mul16u_error(word zeropage(3) a, word zeropage($17) b, dword zeropage($b) ms, dword zeropage($19) mn, dword zeropage($11) mf) mul16u_error: { .label a = 3 @@ -12456,75 +12518,75 @@ mul16u_error: { .label ms = $b .label mn = $19 .label mf = $11 - //SEG520 [245] call print_str - //SEG521 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] - //SEG522 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG523 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG525 [247] call print_str + //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG527 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16u_error->print_str#0] -- register_copy + //SEG528 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG524 mul16u_error::@1 - //SEG525 [246] (word) print_word::w#3 ← (word) mul16u_error::a#0 - //SEG526 [247] call print_word - //SEG527 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] - //SEG528 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG529 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG529 mul16u_error::@1 + //SEG530 [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 + //SEG531 [249] call print_word + //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG533 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG530 [248] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] - //SEG531 mul16u_error::@2 - //SEG532 [249] call print_str - //SEG533 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] - //SEG534 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG535 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG535 [250] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG536 mul16u_error::@2 + //SEG537 [251] call print_str + //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG539 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG536 mul16u_error::@3 - //SEG537 [250] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG541 mul16u_error::@3 + //SEG542 [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG538 [251] call print_word - //SEG539 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] - //SEG540 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG541 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG543 [253] call print_word + //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG545 [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG542 [252] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] - //SEG543 mul16u_error::@4 - //SEG544 [253] call print_str - //SEG545 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] - //SEG546 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG547 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG547 [254] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG548 mul16u_error::@4 + //SEG549 [255] call print_str + //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG551 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG548 mul16u_error::@5 - //SEG549 [254] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - //SEG550 [255] call print_dword - //SEG551 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] - //SEG552 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG553 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG553 mul16u_error::@5 + //SEG554 [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + //SEG555 [257] call print_dword + //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG557 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG554 [256] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] - //SEG555 mul16u_error::@6 - //SEG556 [257] call print_str - //SEG557 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] - //SEG558 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG559 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG559 [258] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG560 mul16u_error::@6 + //SEG561 [259] call print_str + //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG563 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG560 mul16u_error::@7 - //SEG561 [258] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG565 mul16u_error::@7 + //SEG566 [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -12533,24 +12595,24 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG562 [259] call print_dword - //SEG563 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] - //SEG564 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG565 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG567 [261] call print_dword + //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG569 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG566 [260] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] - //SEG567 mul16u_error::@8 - //SEG568 [261] call print_str - //SEG569 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] - //SEG570 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG571 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG571 [262] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG572 mul16u_error::@8 + //SEG573 [263] call print_str + //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG575 [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG572 mul16u_error::@9 - //SEG573 [262] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG577 mul16u_error::@9 + //SEG578 [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -12559,28 +12621,28 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG574 [263] call print_dword - //SEG575 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] - //SEG576 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG577 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG579 [265] call print_dword + //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG581 [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG578 [264] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] - //SEG579 mul16u_error::@10 - //SEG580 [265] call print_ln - //SEG581 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] - //SEG582 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG583 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG583 [266] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG584 mul16u_error::@10 + //SEG585 [267] call print_ln + //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG587 [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG588 [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG584 mul16u_error::@return - //SEG585 [266] return + //SEG589 mul16u_error::@return + //SEG590 [268] return rts str: .text "multiply mismatch @" } -//SEG586 muls16u +//SEG591 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition // muls16u(word zeropage($15) a, word zeropage($17) b) @@ -12590,28 +12652,28 @@ muls16u: { .label i = $2a .label a = $15 .label b = $17 - //SEG587 [267] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + //SEG592 [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b3 !: - //SEG588 [268] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] - //SEG589 [268] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG593 [270] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG594 [270] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #0 sta i sta i+1 - //SEG590 [268] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG595 [270] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 sta m sta m+1 sta m+2 sta m+3 - //SEG591 [268] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] - //SEG592 [268] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG593 [268] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy - //SEG594 muls16u::@2 + //SEG596 [270] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG597 [270] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG598 [270] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG599 muls16u::@2 b2: - //SEG595 [269] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG600 [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -12625,35 +12687,35 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG596 [270] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG601 [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG597 [271] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG602 [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2 lda i cmp a bne b2 - //SEG598 [272] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] - //SEG599 [272] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG603 [274] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG604 [274] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy rts - //SEG600 [272] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG605 [274] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b3: - //SEG601 [272] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG606 [274] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return sta return+1 sta return+2 sta return+3 - //SEG602 muls16u::@1 - //SEG603 muls16u::@return - //SEG604 [273] return + //SEG607 muls16u::@1 + //SEG608 muls16u::@return + //SEG609 [275] return rts } -//SEG605 mulf_init +//SEG610 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = $2e @@ -12663,70 +12725,70 @@ mulf_init: { .label sqr2_hi = $35 .label sqr2_lo = $33 .label dir = $37 - //SEG606 [275] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG607 [275] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG611 [277] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG612 [277] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG608 [275] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG613 [277] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG609 [275] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG614 [277] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG610 [275] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG615 [277] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr sta sqr+1 - //SEG611 [275] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG616 [277] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG612 [275] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG613 [275] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG614 [275] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG615 [275] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG616 [275] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG617 [275] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG618 mulf_init::@1 + //SEG617 [277] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG618 [277] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG619 [277] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG620 [277] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG621 [277] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG622 [277] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG623 mulf_init::@1 b1: - //SEG619 [276] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG624 [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG620 [277] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG625 [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG621 [278] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG626 [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG622 mulf_init::@3 - //SEG623 [279] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG627 mulf_init::@3 + //SEG628 [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG624 [280] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG629 [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG625 [281] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] - //SEG626 [281] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - //SEG627 [281] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy - //SEG628 mulf_init::@2 + //SEG630 [283] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + //SEG631 [283] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + //SEG632 [283] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + //SEG633 mulf_init::@2 b2: - //SEG629 [282] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG634 [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG630 [283] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa + //SEG635 [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG631 [284] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG636 [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG632 [285] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa + //SEG637 [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG633 [286] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG638 [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG634 [287] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG639 [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -12734,130 +12796,130 @@ mulf_init: { bcc !+ inc sqr+1 !: - //SEG635 [288] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG640 [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG636 [289] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG641 [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@4] - //SEG638 [290] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG642 [292] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] + //SEG643 [292] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG639 [290] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + //SEG644 [292] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG640 [290] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + //SEG645 [292] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG641 [290] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 + //SEG646 [292] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 ldx #-1 - //SEG642 [290] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] - //SEG643 [290] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - //SEG644 [290] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - //SEG645 [290] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - //SEG646 [290] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy - //SEG647 mulf_init::@4 + //SEG647 [292] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + //SEG648 [292] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + //SEG649 [292] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + //SEG650 [292] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + //SEG651 [292] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + //SEG652 mulf_init::@4 b4: - //SEG648 [291] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG653 [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG649 [292] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG654 [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG650 [293] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG655 [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG651 [294] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG656 [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG652 [295] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 + //SEG657 [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG653 [297] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] - //SEG654 [297] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + //SEG658 [299] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + //SEG659 [299] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG655 [296] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] - //SEG656 mulf_init::@7 - //SEG657 [297] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] - //SEG658 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy - //SEG659 mulf_init::@5 + //SEG660 [298] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + //SEG661 mulf_init::@7 + //SEG662 [299] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + //SEG663 [299] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + //SEG664 mulf_init::@5 b5: - //SEG660 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG665 [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG661 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG666 [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4 lda sqr2_lo cmp #print_cls::@1] - //SEG669 [304] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG673 [306] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG674 [306] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG670 [304] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG671 [304] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG672 print_cls::@1 + //SEG675 [306] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG676 [306] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG677 print_cls::@1 b1: - //SEG673 [305] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG678 [307] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG674 [306] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG679 [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG675 [307] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG680 [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG676 print_cls::@return - //SEG677 [308] return + //SEG681 print_cls::@return + //SEG682 [310] return rts } -//SEG678 File Data +//SEG683 File Data print_hextab: .text "0123456789abcdef" // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // =(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [93] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [94] phi() [95] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [97] (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#18 ) - [97] (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#4 print_sword::@3/(signed word) print_sword::w#0 ) - [98] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 - [99] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [96] (signed word) print_sword::w#6 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#4 ) + [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 + [98] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [100] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [99] return to:@return -print_word: scope:[print_word] from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@5 mulf_tables_cmp::@7 print_sword::@1 - [101] (byte*) print_char_cursor#139 ← phi( mul8u_error::@5/(byte*) print_char_cursor#132 mul8u_error::@7/(byte*) print_char_cursor#132 mul8u_error::@9/(byte*) print_char_cursor#132 mulf_tables_cmp::@5/(byte*) print_char_cursor#132 mulf_tables_cmp::@7/(byte*) print_char_cursor#132 print_sword::@1/(byte*) print_char_cursor#134 ) - [101] (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@5/(word) print_word::w#1 mulf_tables_cmp::@7/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) - [102] (byte) print_byte::b#1 ← > (word) print_word::w#6 - [103] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [104] (byte) print_byte::b#2 ← < (word) print_word::w#6 - [105] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [106] return - to:@return -print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1 - [107] (byte*) print_char_cursor#140 ← phi( mul8u_error::@1/(byte*) print_char_cursor#132 mul8u_error::@3/(byte*) print_char_cursor#132 print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#18 ) - [107] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) - [108] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 - [109] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [110] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [111] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f - [112] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [113] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [114] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - [115] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#140 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#132 ) - [115] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) - [116] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 - [117] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 +print_sword::@1: scope:[print_sword] from print_sword + [100] phi() + [101] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + [103] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#134 print_sbyte::@3/(byte*) print_char_cursor#134 print_sword::@1/(byte*) print_char_cursor#134 print_sword::@3/(byte*) print_char_cursor#134 ) + [103] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [104] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 + [105] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [118] return + [106] return + to:@return +print_word: scope:[print_word] from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@5 mulf_tables_cmp::@7 print_sword::@2 + [107] (byte*) print_char_cursor#142 ← phi( mul8u_error::@5/(byte*) print_char_cursor#134 mul8u_error::@7/(byte*) print_char_cursor#134 mul8u_error::@9/(byte*) print_char_cursor#134 mulf_tables_cmp::@5/(byte*) print_char_cursor#134 mulf_tables_cmp::@7/(byte*) print_char_cursor#134 print_sword::@2/(byte*) print_char_cursor#19 ) + [107] (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@5/(word) print_word::w#1 mulf_tables_cmp::@7/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) + [108] (byte) print_byte::b#1 ← > (word) print_word::w#6 + [109] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [110] (byte) print_byte::b#2 ← < (word) print_word::w#6 + [111] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [112] return + to:@return +print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1 + [113] (byte*) print_char_cursor#143 ← phi( mul8u_error::@1/(byte*) print_char_cursor#134 mul8u_error::@3/(byte*) print_char_cursor#134 print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#19 ) + [113] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) + [114] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 + [115] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [116] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [117] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f + [118] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [119] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [120] return to:@return print_sbyte: scope:[print_sbyte] from mul8s_error::@1 mul8s_error::@3 - [119] (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 ) - [120] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 + [121] (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 ) + [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [121] phi() - [122] call print_char + [123] phi() + [124] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [123] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 ) - [124] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 - [125] call print_byte + [125] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 ) + [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 + [127] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [126] return + [128] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [127] phi() - [128] call print_char + [129] phi() + [130] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [129] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 + [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 to:print_sbyte::@2 mul8s: scope:[mul8s] from mul8s_compare::@11 - [130] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 - [131] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 - [132] call mul8u - [133] (word) mul8u::return#2 ← (word) mul8u::res#2 + [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 + [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 + [134] call mul8u + [135] (word) mul8u::return#2 ← (word) mul8u::res#2 to:mul8s::@5 mul8s::@5: scope:[mul8s] from mul8s - [134] (word) mul8s::m#0 ← (word) mul8u::return#2 - [135] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 + [136] (word) mul8s::m#0 ← (word) mul8u::return#2 + [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 to:mul8s::@3 mul8s::@3: scope:[mul8s] from mul8s::@5 - [136] (byte~) mul8s::$9 ← > (word) mul8s::m#0 - [137] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 - [138] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 + [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 + [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 + [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 to:mul8s::@1 mul8s::@1: scope:[mul8s] from mul8s::@3 mul8s::@5 - [139] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@5/(word) mul8s::m#0 ) - [140] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 + [141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@5/(word) mul8s::m#0 ) + [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 to:mul8s::@4 mul8s::@4: scope:[mul8s] from mul8s::@1 - [141] (byte~) mul8s::$13 ← > (word) mul8s::m#5 - [142] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 - [143] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 + [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 + [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 + [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 to:mul8s::@2 mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 - [144] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) + [146] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) to:mul8s::@return mul8s::@return: scope:[mul8s] from mul8s::@2 - [145] return + [147] return to:@return mul8u: scope:[mul8u] from mul8s mul8u_compare::@11 - [146] (byte) mul8u::a#6 ← phi( mul8s/(byte) mul8u::a#1 mul8u_compare::@11/(byte) mul8u::a#2 ) - [146] (word) mul8u::mb#0 ← phi( mul8s/(byte) mul8u::b#0 mul8u_compare::@11/(byte) mul8u::b#1 ) + [148] (byte) mul8u::a#6 ← phi( mul8s/(byte) mul8u::a#1 mul8u_compare::@11/(byte) mul8u::a#2 ) + [148] (word) mul8u::mb#0 ← phi( mul8s/(byte) mul8u::b#0 mul8u_compare::@11/(byte) mul8u::b#1 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [147] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [147] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [147] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [148] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [149] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [150] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [149] return + [151] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [150] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [151] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [153] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [152] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [153] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [154] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [155] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 mulf8s: scope:[mulf8s] from mul8s_compare::@10 - [156] phi() + [158] phi() to:mulf8s::mulf8s_prepare1 mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - [157] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 - [158] call mulf8u_prepare + [159] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 + [160] call mulf8u_prepare to:mulf8s::@1 mulf8s::@1: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - [159] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 - [160] call mulf8s_prepared + [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 + [162] call mulf8s_prepared to:mulf8s::@2 mulf8s::@2: scope:[mulf8s] from mulf8s::@1 - [161] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 + [163] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 to:mulf8s::@return mulf8s::@return: scope:[mulf8s] from mulf8s::@2 - [162] return + [164] return to:@return mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@1 - [163] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 - [164] call mulf8u_prepared - [165] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + [165] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 + [166] call mulf8u_prepared + [167] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 to:mulf8s_prepared::@5 mulf8s_prepared::@5: scope:[mulf8s_prepared] from mulf8s_prepared - [166] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - [167] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 + [168] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + [169] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@5 - [168] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 - [169] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 - [170] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [170] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 + [171] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 + [172] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@5 - [171] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 ) - [172] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 + [173] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 ) + [174] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [173] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 - [174] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [175] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [175] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 + [176] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [177] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [176] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [178] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [177] return + [179] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@1 - [178] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#1 mulf8u::@1/(byte) mulf8u_prepared::b#0 ) - [179] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 + [180] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#1 mulf8u::@1/(byte) mulf8u_prepared::b#0 ) + [181] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [181] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [183] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [182] return + [184] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 mulf8u - [183] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#1 mulf8u/(byte) mulf8u_prepare::a#0 ) - [184] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [185] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#1 mulf8u/(byte) mulf8u_prepare::a#0 ) + [186] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [186] return + [188] return to:@return muls8s: scope:[muls8s] from mul8s_compare::@2 - [187] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 + [189] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 to:muls8s::@2 muls8s::@2: scope:[muls8s] from muls8s - [188] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 + [190] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 to:muls8s::@3 muls8s::@3: scope:[muls8s] from muls8s::@2 muls8s::@3 - [189] (signed byte) muls8s::j#2 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed byte) muls8s::j#1 ) - [189] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 ) - [190] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 - [191] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 - [192] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 + [191] (signed byte) muls8s::j#2 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed byte) muls8s::j#1 ) + [191] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 ) + [192] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 + [193] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 + [194] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 to:muls8s::@1 muls8s::@1: scope:[muls8s] from muls8s::@2 muls8s::@3 muls8s::@4 - [193] (signed word) muls8s::return#0 ← phi( muls8s::@4/(signed word) muls8s::m#2 muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 ) + [195] (signed word) muls8s::return#0 ← phi( muls8s::@4/(signed word) muls8s::m#2 muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 ) to:muls8s::@return muls8s::@return: scope:[muls8s] from muls8s::@1 - [194] return + [196] return to:@return muls8s::@4: scope:[muls8s] from muls8s muls8s::@4 - [195] (signed byte) muls8s::i#2 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed byte) muls8s::i#1 ) - [195] (signed word) muls8s::m#5 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed word) muls8s::m#2 ) - [196] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 - [197] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 - [198] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 + [197] (signed byte) muls8s::i#2 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed byte) muls8s::i#1 ) + [197] (signed word) muls8s::m#5 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed word) muls8s::m#2 ) + [198] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 + [199] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 + [200] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 to:muls8s::@1 mul8u_compare: scope:[mul8u_compare] from main::@4 - [199] phi() + [201] phi() to:mul8u_compare::@1 mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@8 - [200] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) 0 mul8u_compare::@8/(byte) mul8u_compare::a#1 ) + [202] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) 0 mul8u_compare::@8/(byte) mul8u_compare::a#1 ) to:mul8u_compare::@2 mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5 - [201] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) - [202] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - [203] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 - [204] call muls8u - [205] (word) muls8u::return#2 ← (word) muls8u::return#0 + [203] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) + [204] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + [205] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 + [206] call muls8u + [207] (word) muls8u::return#2 ← (word) muls8u::return#0 to:mul8u_compare::@10 mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@2 - [206] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - [207] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 - [208] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 - [209] call mulf8u - [210] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + [208] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + [209] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 + [210] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 + [211] call mulf8u + [212] (word) mulf8u::return#2 ← (word) mulf8u::return#0 to:mul8u_compare::@11 mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10 - [211] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - [212] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 - [213] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 - [214] call mul8u - [215] (word) mul8u::return#3 ← (word) mul8u::res#2 + [213] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + [214] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 + [215] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 + [216] call mul8u + [217] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mul8u_compare::@12 mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@11 - [216] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - [217] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 + [218] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + [219] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 to:mul8u_compare::@6 mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@12 - [218] phi() + [220] phi() to:mul8u_compare::@3 mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@12 mul8u_compare::@6 - [219] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@12/(byte) 1 mul8u_compare::@6/(byte) 0 ) - [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 + [221] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@12/(byte) 1 mul8u_compare::@6/(byte) 0 ) + [222] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 to:mul8u_compare::@4 mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@3 - [221] phi() + [223] phi() to:mul8u_compare::@4 mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@3 - [222] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte) 0 ) - [223] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 + [224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte) 0 ) + [225] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 to:mul8u_compare::@7 mul8u_compare::@7: scope:[mul8u_compare] from mul8u_compare::@4 - [224] *((const byte*) BGCOL#0) ← (byte) 2 - [225] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 - [226] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - [227] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - [228] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - [229] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - [230] call mul8u_error + [226] *((const byte*) BGCOL#0) ← (byte) 2 + [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 + [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + [232] call mul8u_error to:mul8u_compare::@return mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@13 mul8u_compare::@7 - [231] return + [233] return to:@return mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4 - [232] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 - [233] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 + [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 + [235] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 to:mul8u_compare::@8 mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@5 - [234] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 - [235] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 + [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 + [237] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 to:mul8u_compare::@9 mul8u_compare::@9: scope:[mul8u_compare] from mul8u_compare::@8 - [236] phi() - [237] call print_str + [238] phi() + [239] call print_str to:mul8u_compare::@13 mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@9 - [238] phi() - [239] call print_ln + [240] phi() + [241] call print_ln to:mul8u_compare::@return mul8u_error: scope:[mul8u_error] from mul8u_compare::@7 - [240] phi() - [241] call print_str + [242] phi() + [243] call print_str to:mul8u_error::@1 mul8u_error::@1: scope:[mul8u_error] from mul8u_error - [242] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - [243] call print_byte + [244] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + [245] call print_byte to:mul8u_error::@2 mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 - [244] phi() - [245] call print_str + [246] phi() + [247] call print_str to:mul8u_error::@3 mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 - [246] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 - [247] call print_byte + [248] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 + [249] call print_byte to:mul8u_error::@4 mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 - [248] phi() - [249] call print_str + [250] phi() + [251] call print_str to:mul8u_error::@5 mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 - [250] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - [251] call print_word + [252] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + [253] call print_word to:mul8u_error::@6 mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 - [252] phi() - [253] call print_str + [254] phi() + [255] call print_str to:mul8u_error::@7 mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 - [254] (word) print_word::w#4 ← (word) mul8u_error::mn#0 - [255] call print_word + [256] (word) print_word::w#4 ← (word) mul8u_error::mn#0 + [257] call print_word to:mul8u_error::@8 mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 - [256] phi() - [257] call print_str + [258] phi() + [259] call print_str to:mul8u_error::@9 mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8 - [258] (word) print_word::w#5 ← (word) mul8u_error::mf#0 - [259] call print_word + [260] (word) print_word::w#5 ← (word) mul8u_error::mf#0 + [261] call print_word to:mul8u_error::@10 mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9 - [260] phi() - [261] call print_ln + [262] phi() + [263] call print_ln to:mul8u_error::@return mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@10 - [262] return + [264] return to:@return mulf8u: scope:[mulf8u] from mul8u_compare::@10 - [263] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - [264] call mulf8u_prepare + [265] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + [266] call mulf8u_prepare to:mulf8u::@1 mulf8u::@1: scope:[mulf8u] from mulf8u - [265] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - [266] call mulf8u_prepared - [267] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + [267] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + [268] call mulf8u_prepared + [269] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 to:mulf8u::@2 mulf8u::@2: scope:[mulf8u] from mulf8u::@1 - [268] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + [270] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 to:mulf8u::@return mulf8u::@return: scope:[mulf8u] from mulf8u::@2 - [269] return + [271] return to:@return muls8u: scope:[muls8u] from mul8u_compare::@2 - [270] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 + [272] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 to:muls8u::@2 muls8u::@2: scope:[muls8u] from muls8u muls8u::@2 - [271] (byte) muls8u::i#2 ← phi( muls8u/(byte) 0 muls8u::@2/(byte) muls8u::i#1 ) - [271] (word) muls8u::m#3 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 ) - [272] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 - [273] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 - [274] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 + [273] (byte) muls8u::i#2 ← phi( muls8u/(byte) 0 muls8u::@2/(byte) muls8u::i#1 ) + [273] (word) muls8u::m#3 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 ) + [274] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 + [275] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 + [276] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 to:muls8u::@1 muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 - [275] (word) muls8u::return#0 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 ) + [277] (word) muls8u::return#0 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 ) to:muls8u::@return muls8u::@return: scope:[muls8u] from muls8u::@1 - [276] return + [278] return to:@return mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3 - [277] phi() + [279] phi() to:mulf_tables_cmp::@1 mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2 - [278] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) - [278] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) - [279] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 + [280] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) + [280] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) + [281] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 to:mulf_tables_cmp::@3 mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [280] *((const byte*) BGCOL#0) ← (byte) 2 - [281] call print_str + [282] *((const byte*) BGCOL#0) ← (byte) 2 + [283] call print_str to:mulf_tables_cmp::@5 mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3 - [282] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - [283] call print_word + [284] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + [285] call print_word to:mulf_tables_cmp::@6 mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5 - [284] phi() - [285] call print_str + [286] phi() + [287] call print_str to:mulf_tables_cmp::@7 mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6 - [286] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 - [287] call print_word + [288] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 + [289] call print_word to:mulf_tables_cmp::@return mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7 mulf_tables_cmp::@9 - [288] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@9/(byte*) print_line_cursor#1 mulf_tables_cmp::@7/(byte*) 1024 ) - [288] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@9/(byte*~) print_char_cursor#225 mulf_tables_cmp::@7/(byte*) print_char_cursor#18 ) - [289] return + [290] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@9/(byte*) print_line_cursor#1 mulf_tables_cmp::@7/(byte*) 1024 ) + [290] (byte*) print_char_cursor#32 ← phi( mulf_tables_cmp::@9/(byte*~) print_char_cursor#227 mulf_tables_cmp::@7/(byte*) print_char_cursor#19 ) + [291] return to:@return mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [290] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 - [291] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 - [292] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 + [292] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 + [293] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 + [294] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 to:mulf_tables_cmp::@4 mulf_tables_cmp::@4: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2 - [293] phi() - [294] call print_str + [295] phi() + [296] call print_str to:mulf_tables_cmp::@8 mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@4 - [295] phi() - [296] call print_ln + [297] phi() + [298] call print_ln to:mulf_tables_cmp::@9 mulf_tables_cmp::@9: scope:[mulf_tables_cmp] from mulf_tables_cmp::@8 - [297] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 + [299] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 to:mulf_tables_cmp::@return mulf_init_asm: scope:[mulf_init_asm] from main::@2 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } - [299] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) - [300] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) - [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) - [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) + [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) + [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) + [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) + [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) to:mulf_init_asm::@return mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm - [303] return + [305] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [304] phi() + [306] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [305] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [305] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [305] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [305] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [305] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [306] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [307] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 - [308] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 + [307] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [307] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [307] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [307] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [307] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [308] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [309] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 + [310] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@1 - [309] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [310] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [311] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [312] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@3 - [311] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) - [311] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) - [312] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 - [313] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 - [314] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 - [315] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 - [316] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [317] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [318] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [319] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 + [313] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) + [313] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) + [314] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 + [315] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 + [316] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 + [317] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 + [318] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [319] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [320] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [321] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@2 mulf_init::@5 - [320] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) - [320] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) - [320] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) - [320] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) - [321] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [322] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [323] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [324] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [325] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 + [322] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) + [322] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) + [322] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) + [322] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) + [323] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [324] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [325] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [326] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [327] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 to:mulf_init::@5 mulf_init::@7: scope:[mulf_init] from mulf_init::@4 - [326] phi() + [328] phi() to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@4 mulf_init::@7 - [327] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) - [328] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [329] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 + [329] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) + [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 to:mulf_init::@6 mulf_init::@6: scope:[mulf_init] from mulf_init::@5 - [330] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) - [331] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) + [332] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) + [333] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@6 - [332] return + [334] return to:@return print_cls: scope:[print_cls] from main - [333] phi() + [335] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [334] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [335] *((byte*) print_cls::sc#2) ← (byte) ' ' - [336] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [337] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [336] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [337] *((byte*) print_cls::sc#2) ← (byte) ' ' + [338] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [339] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [338] return + [340] return to:@return diff --git a/src/test/ref/test-multiply-8bit.log b/src/test/ref/test-multiply-8bit.log index 2eb10fe89..53daf2a58 100644 --- a/src/test/ref/test-multiply-8bit.log +++ b/src/test/ref/test-multiply-8bit.log @@ -21,6 +21,7 @@ Culled Empty Block (label) print_str::@6 Culled Empty Block (label) @3 Culled Empty Block (label) @4 Culled Empty Block (label) @5 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @6 Culled Empty Block (label) print_sbyte::@4 Culled Empty Block (label) @7 @@ -82,37 +83,37 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@12 print_str: scope:[print_str] from mul8s_compare::@11 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@11 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@5 mulf_tables_cmp::@7 - (byte*) print_char_cursor#152 ← phi( mul8s_compare::@11/(byte*) print_char_cursor#149 mul8s_error/(byte*) print_char_cursor#150 mul8s_error::@2/(byte*) print_char_cursor#55 mul8s_error::@4/(byte*) print_char_cursor#57 mul8s_error::@6/(byte*) print_char_cursor#59 mul8s_error::@8/(byte*) print_char_cursor#61 mul8u_compare::@11/(byte*) print_char_cursor#146 mul8u_error/(byte*) print_char_cursor#147 mul8u_error::@2/(byte*) print_char_cursor#39 mul8u_error::@4/(byte*) print_char_cursor#41 mul8u_error::@6/(byte*) print_char_cursor#43 mul8u_error::@8/(byte*) print_char_cursor#45 mulf_tables_cmp::@3/(byte*) print_char_cursor#143 mulf_tables_cmp::@5/(byte*) print_char_cursor#144 mulf_tables_cmp::@7/(byte*) print_char_cursor#28 ) + (byte*) print_char_cursor#155 ← phi( mul8s_compare::@11/(byte*) print_char_cursor#152 mul8s_error/(byte*) print_char_cursor#153 mul8s_error::@2/(byte*) print_char_cursor#56 mul8s_error::@4/(byte*) print_char_cursor#58 mul8s_error::@6/(byte*) print_char_cursor#60 mul8s_error::@8/(byte*) print_char_cursor#62 mul8u_compare::@11/(byte*) print_char_cursor#149 mul8u_error/(byte*) print_char_cursor#150 mul8u_error::@2/(byte*) print_char_cursor#40 mul8u_error::@4/(byte*) print_char_cursor#42 mul8u_error::@6/(byte*) print_char_cursor#44 mul8u_error::@8/(byte*) print_char_cursor#46 mulf_tables_cmp::@3/(byte*) print_char_cursor#146 mulf_tables_cmp::@5/(byte*) print_char_cursor#147 mulf_tables_cmp::@7/(byte*) print_char_cursor#29 ) (byte*) print_str::str#18 ← phi( mul8s_compare::@11/(byte*) print_str::str#10 mul8s_error/(byte*) print_str::str#11 mul8s_error::@2/(byte*) print_str::str#12 mul8s_error::@4/(byte*) print_str::str#13 mul8s_error::@6/(byte*) print_str::str#14 mul8s_error::@8/(byte*) print_str::str#15 mul8u_compare::@11/(byte*) print_str::str#4 mul8u_error/(byte*) print_str::str#5 mul8u_error::@2/(byte*) print_str::str#6 mul8u_error::@4/(byte*) print_str::str#7 mul8u_error::@6/(byte*) print_str::str#8 mul8u_error::@8/(byte*) print_str::str#9 mulf_tables_cmp::@3/(byte*) print_str::str#1 mulf_tables_cmp::@5/(byte*) print_str::str#3 mulf_tables_cmp::@7/(byte*) print_str::str#2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#155 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#16 ← phi( print_str/(byte*) print_str::str#18 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#16) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#67 ← phi( print_str::@1/(byte*) print_char_cursor#132 ) + (byte*) print_char_cursor#68 ← phi( print_str::@1/(byte*) print_char_cursor#134 ) (byte*) print_str::str#17 ← phi( print_str::@1/(byte*) print_str::str#16 ) - *((byte*) print_char_cursor#67) ← *((byte*) print_str::str#17) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#67 + *((byte*) print_char_cursor#68) ← *((byte*) print_str::str#17) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#68 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#17 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#68 ← phi( print_str::@1/(byte*) print_char_cursor#132 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#68 + (byte*) print_char_cursor#69 ← phi( print_str::@1/(byte*) print_char_cursor#134 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#69 return to:@return print_ln: scope:[print_ln] from mul8s_compare::@16 mul8s_error::@10 mul8u_compare::@16 mul8u_error::@10 mulf_tables_cmp::@10 - (byte*) print_char_cursor#133 ← phi( mul8s_compare::@16/(byte*) print_char_cursor#52 mul8s_error::@10/(byte*) print_char_cursor#63 mul8u_compare::@16/(byte*) print_char_cursor#36 mul8u_error::@10/(byte*) print_char_cursor#47 mulf_tables_cmp::@10/(byte*) print_char_cursor#32 ) + (byte*) print_char_cursor#135 ← phi( mul8s_compare::@16/(byte*) print_char_cursor#53 mul8s_error::@10/(byte*) print_char_cursor#64 mul8u_compare::@16/(byte*) print_char_cursor#37 mul8u_error::@10/(byte*) print_char_cursor#48 mulf_tables_cmp::@10/(byte*) print_char_cursor#33 ) (byte*) print_line_cursor#45 ← phi( mul8s_compare::@16/(byte*) print_line_cursor#54 mul8s_error::@10/(byte*) print_line_cursor#55 mul8u_compare::@16/(byte*) print_line_cursor#51 mul8u_error::@10/(byte*) print_line_cursor#52 mulf_tables_cmp::@10/(byte*) print_line_cursor#49 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#69 ← phi( print_ln/(byte*) print_char_cursor#133 print_ln::@1/(byte*) print_char_cursor#69 ) + (byte*) print_char_cursor#70 ← phi( print_ln/(byte*) print_char_cursor#135 print_ln::@1/(byte*) print_char_cursor#70 ) (byte*) print_line_cursor#23 ← phi( print_ln/(byte*) print_line_cursor#45 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#23 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#69 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#70 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -120,157 +121,167 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#24 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#70 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) + (byte*) print_char_cursor#71 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) (byte*) print_line_cursor#25 ← phi( print_ln::@2/(byte*) print_line_cursor#24 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#25 - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#70 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#71 return to:@return print_sword: scope:[print_sword] from mul8s_error::@5 mul8s_error::@7 mul8s_error::@9 - (byte*) print_char_cursor#153 ← phi( mul8s_error::@5/(byte*) print_char_cursor#58 mul8s_error::@7/(byte*) print_char_cursor#60 mul8s_error::@9/(byte*) print_char_cursor#62 ) + (byte*) print_char_cursor#156 ← phi( mul8s_error::@5/(byte*) print_char_cursor#59 mul8s_error::@7/(byte*) print_char_cursor#61 mul8s_error::@9/(byte*) print_char_cursor#63 ) (signed word) print_sword::w#4 ← phi( mul8s_error::@5/(signed word) print_sword::w#1 mul8s_error::@7/(signed word) print_sword::w#2 mul8s_error::@9/(signed word) print_sword::w#3 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#4 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#153 print_sword::@4/(byte*) print_char_cursor#6 ) - (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#4 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#5 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#71 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#71 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#7 ← phi( print_sword/(signed word) print_sword::w#4 ) - (byte*) print_char_cursor#135 ← phi( print_sword/(byte*) print_char_cursor#153 ) + (byte*) print_char_cursor#136 ← phi( print_sword/(byte*) print_char_cursor#156 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#6 ← phi( print_sword::@2/(signed word) print_sword::w#7 ) - (byte*) print_char_cursor#72 ← phi( print_sword::@2/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#72 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#6 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#5 ← phi( print_sword::@1/(signed word) print_sword::w#7 ) + (byte*) print_char_cursor#72 ← phi( print_sword::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#72 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#5 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#73 ← phi( print_sword::@3/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#73 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#9 ← phi( print_sword/(signed word) print_sword::w#4 ) + (byte*) print_char_cursor#137 ← phi( print_sword/(byte*) print_char_cursor#156 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#8 ← phi( print_sword::@3/(signed word) print_sword::w#9 ) + (byte*) print_char_cursor#73 ← phi( print_sword::@3/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#73 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#138 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) + (signed word) print_sword::w#6 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#8 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#6 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#74 ← phi( print_sword::@2/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#74 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#75 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#75 return to:@return print_sbyte: scope:[print_sbyte] from mul8s_error::@1 mul8s_error::@3 - (byte*) print_char_cursor#154 ← phi( mul8s_error::@1/(byte*) print_char_cursor#54 mul8s_error::@3/(byte*) print_char_cursor#56 ) + (byte*) print_char_cursor#157 ← phi( mul8s_error::@1/(byte*) print_char_cursor#55 mul8s_error::@3/(byte*) print_char_cursor#57 ) (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 ) (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#3 < (number) 0 if((bool~) print_sbyte::$0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@1: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#6 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 ) - (byte*) print_char_cursor#136 ← phi( print_sbyte/(byte*) print_char_cursor#154 ) - (byte) print_char::ch#1 ← (byte) '-' + (byte*) print_char_cursor#139 ← phi( print_sbyte/(byte*) print_char_cursor#157 ) + (byte) print_char::ch#2 ← (byte) '-' call print_char to:print_sbyte::@5 print_sbyte::@5: scope:[print_sbyte] from print_sbyte::@1 (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@1/(signed byte) print_sbyte::b#6 ) - (byte*) print_char_cursor#74 ← phi( print_sbyte::@1/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#74 + (byte*) print_char_cursor#76 ← phi( print_sbyte::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#76 (signed byte~) print_sbyte::$5 ← - (signed byte) print_sbyte::b#4 (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$5 to:print_sbyte::@2 print_sbyte::@3: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#8 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 ) - (byte*) print_char_cursor#137 ← phi( print_sbyte/(byte*) print_char_cursor#154 ) - (byte) print_char::ch#2 ← (byte) ' ' + (byte*) print_char_cursor#140 ← phi( print_sbyte/(byte*) print_char_cursor#157 ) + (byte) print_char::ch#3 ← (byte) ' ' call print_char to:print_sbyte::@6 print_sbyte::@6: scope:[print_sbyte] from print_sbyte::@3 (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@3/(signed byte) print_sbyte::b#8 ) - (byte*) print_char_cursor#75 ← phi( print_sbyte::@3/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#75 + (byte*) print_char_cursor#77 ← phi( print_sbyte::@3/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#77 to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@5 print_sbyte::@6 - (byte*) print_char_cursor#138 ← phi( print_sbyte::@5/(byte*) print_char_cursor#8 print_sbyte::@6/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#141 ← phi( print_sbyte::@5/(byte*) print_char_cursor#9 print_sbyte::@6/(byte*) print_char_cursor#10 ) (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@6/(signed byte) print_sbyte::b#7 ) (byte~) print_sbyte::$1 ← ((byte)) (signed byte) print_sbyte::b#5 (byte) print_byte::b#0 ← (byte~) print_sbyte::$1 call print_byte to:print_sbyte::@7 print_sbyte::@7: scope:[print_sbyte] from print_sbyte::@2 - (byte*) print_char_cursor#76 ← phi( print_sbyte::@2/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#76 + (byte*) print_char_cursor#78 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#78 to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@7 - (byte*) print_char_cursor#77 ← phi( print_sbyte::@7/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#77 + (byte*) print_char_cursor#79 ← phi( print_sbyte::@7/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#79 return to:@return -print_word: scope:[print_word] from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@6 mulf_tables_cmp::@8 print_sword::@1 - (byte*) print_char_cursor#139 ← phi( mul8u_error::@5/(byte*) print_char_cursor#42 mul8u_error::@7/(byte*) print_char_cursor#44 mul8u_error::@9/(byte*) print_char_cursor#46 mulf_tables_cmp::@6/(byte*) print_char_cursor#27 mulf_tables_cmp::@8/(byte*) print_char_cursor#29 print_sword::@1/(byte*) print_char_cursor#134 ) - (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@6/(word) print_word::w#1 mulf_tables_cmp::@8/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@6 mulf_tables_cmp::@8 print_sword::@2 + (byte*) print_char_cursor#142 ← phi( mul8u_error::@5/(byte*) print_char_cursor#43 mul8u_error::@7/(byte*) print_char_cursor#45 mul8u_error::@9/(byte*) print_char_cursor#47 mulf_tables_cmp::@6/(byte*) print_char_cursor#28 mulf_tables_cmp::@8/(byte*) print_char_cursor#30 print_sword::@2/(byte*) print_char_cursor#138 ) + (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@6/(word) print_word::w#1 mulf_tables_cmp::@8/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#6 (byte) print_byte::b#1 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#7 ← phi( print_word/(word) print_word::w#6 ) - (byte*) print_char_cursor#78 ← phi( print_word/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#78 + (byte*) print_char_cursor#80 ← phi( print_word/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#80 (byte~) print_word::$2 ← < (word) print_word::w#7 (byte) print_byte::b#2 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#79 ← phi( print_word::@1/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#79 + (byte*) print_char_cursor#81 ← phi( print_word::@1/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#81 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#80 ← phi( print_word::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#80 + (byte*) print_char_cursor#82 ← phi( print_word::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#82 return to:@return @12: scope:[] from @begin (byte*) print_screen#9 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#176 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#179 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#89 ← phi( @begin/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@24 print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1 - (byte*) print_char_cursor#140 ← phi( mul8u_error::@1/(byte*) print_char_cursor#38 mul8u_error::@3/(byte*) print_char_cursor#40 print_sbyte::@2/(byte*) print_char_cursor#138 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#143 ← phi( mul8u_error::@1/(byte*) print_char_cursor#39 mul8u_error::@3/(byte*) print_char_cursor#41 print_sbyte::@2/(byte*) print_char_cursor#141 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#13 ) (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (number) 4 - (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#6 ← phi( print_byte/(byte) print_byte::b#5 ) - (byte*) print_char_cursor#81 ← phi( print_byte/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#81 + (byte*) print_char_cursor#83 ← phi( print_byte/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#83 (number~) print_byte::$2 ← (byte) print_byte::b#6 & (number) $f - (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#5 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#82 ← phi( print_byte::@1/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#82 + (byte*) print_char_cursor#84 ← phi( print_byte::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#84 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#83 ← phi( print_byte::@2/(byte*) print_char_cursor#16 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#83 + (byte*) print_char_cursor#85 ← phi( print_byte::@2/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#85 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#140 print_byte::@1/(byte*) print_char_cursor#15 print_sbyte::@1/(byte*) print_char_cursor#136 print_sbyte::@3/(byte*) print_char_cursor#137 print_sword::@2/(byte*) print_char_cursor#135 ) - (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) print_char::ch#1 print_sbyte::@3/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 - (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#16 print_sbyte::@1/(byte*) print_char_cursor#139 print_sbyte::@3/(byte*) print_char_cursor#140 print_sword::@1/(byte*) print_char_cursor#136 print_sword::@3/(byte*) print_char_cursor#137 ) + (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) print_char::ch#2 print_sbyte::@3/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 + (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#85 ← phi( print_char/(byte*) print_char_cursor#18 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#85 + (byte*) print_char_cursor#87 ← phi( print_char/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#87 return to:@return print_cls: scope:[print_cls] from main @@ -289,13 +300,13 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#20 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#21 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#86 ← phi( print_cls::@2/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#88 ← phi( print_cls::@2/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#26 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#26 - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#86 + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#88 return to:@return mul8u: scope:[mul8u] from mul8s mul8u_compare::@13 @@ -404,7 +415,7 @@ mul8s::@return: scope:[mul8s] from mul8s::@2 to:@return @24: scope:[] from @12 (byte*) print_screen#8 ← phi( @12/(byte*) print_screen#9 ) - (byte*) print_char_cursor#171 ← phi( @12/(byte*) print_char_cursor#176 ) + (byte*) print_char_cursor#174 ← phi( @12/(byte*) print_char_cursor#179 ) (byte*) print_line_cursor#78 ← phi( @12/(byte*) print_line_cursor#89 ) (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } @@ -635,59 +646,59 @@ mulf8s::@return: scope:[mulf8s] from mulf8s::@4 to:@return @33: scope:[] from @24 (byte*) print_screen#7 ← phi( @24/(byte*) print_screen#8 ) - (byte*) print_char_cursor#163 ← phi( @24/(byte*) print_char_cursor#171 ) + (byte*) print_char_cursor#166 ← phi( @24/(byte*) print_char_cursor#174 ) (byte*) print_line_cursor#67 ← phi( @24/(byte*) print_line_cursor#78 ) (byte*) BGCOL#0 ← ((byte*)) (number) $d021 to:@36 main: scope:[main] from @42 - (byte*) print_char_cursor#141 ← phi( @42/(byte*) print_char_cursor#151 ) + (byte*) print_char_cursor#144 ← phi( @42/(byte*) print_char_cursor#154 ) (byte*) print_line_cursor#46 ← phi( @42/(byte*) print_line_cursor#56 ) (byte*) print_screen#4 ← phi( @42/(byte*) print_screen#5 ) *((byte*) BGCOL#0) ← (number) 5 call print_cls to:main::@1 main::@1: scope:[main] from main - (byte*) print_char_cursor#87 ← phi( main/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#89 ← phi( main/(byte*) print_char_cursor#22 ) (byte*) print_line_cursor#27 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#27 - (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#87 + (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#89 call mulf_init to:main::@2 main::@2: scope:[main] from main::@1 (byte*) print_line_cursor#57 ← phi( main::@1/(byte*) print_line_cursor#5 ) - (byte*) print_char_cursor#155 ← phi( main::@1/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#158 ← phi( main::@1/(byte*) print_char_cursor#23 ) call mulf_init_asm to:main::@3 main::@3: scope:[main] from main::@2 (byte*) print_line_cursor#47 ← phi( main::@2/(byte*) print_line_cursor#57 ) - (byte*) print_char_cursor#142 ← phi( main::@2/(byte*) print_char_cursor#155 ) + (byte*) print_char_cursor#145 ← phi( main::@2/(byte*) print_char_cursor#158 ) call mulf_tables_cmp to:main::@4 main::@4: scope:[main] from main::@3 (byte*) print_line_cursor#28 ← phi( main::@3/(byte*) print_line_cursor#10 ) - (byte*) print_char_cursor#88 ← phi( main::@3/(byte*) print_char_cursor#31 ) - (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#88 + (byte*) print_char_cursor#90 ← phi( main::@3/(byte*) print_char_cursor#32 ) + (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#90 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#28 call mul8u_compare to:main::@5 main::@5: scope:[main] from main::@4 (byte*) print_line_cursor#29 ← phi( main::@4/(byte*) print_line_cursor#13 ) - (byte*) print_char_cursor#89 ← phi( main::@4/(byte*) print_char_cursor#35 ) - (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#89 + (byte*) print_char_cursor#91 ← phi( main::@4/(byte*) print_char_cursor#36 ) + (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#91 (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#29 call mul8s_compare to:main::@6 main::@6: scope:[main] from main::@5 (byte*) print_line_cursor#30 ← phi( main::@5/(byte*) print_line_cursor#18 ) - (byte*) print_char_cursor#90 ← phi( main::@5/(byte*) print_char_cursor#51 ) - (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#90 + (byte*) print_char_cursor#92 ← phi( main::@5/(byte*) print_char_cursor#52 ) + (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#92 (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#30 to:main::@return main::@return: scope:[main] from main::@6 - (byte*) print_char_cursor#91 ← phi( main::@6/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#93 ← phi( main::@6/(byte*) print_char_cursor#26 ) (byte*) print_line_cursor#31 ← phi( main::@6/(byte*) print_line_cursor#8 ) (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#31 - (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#91 + (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#93 return to:@return muls8u: scope:[muls8u] from mul8u_compare::@2 @@ -784,7 +795,7 @@ muls8s::@return: scope:[muls8s] from muls8s::@3 to:@return @36: scope:[] from @33 (byte*) print_screen#6 ← phi( @33/(byte*) print_screen#7 ) - (byte*) print_char_cursor#162 ← phi( @33/(byte*) print_char_cursor#163 ) + (byte*) print_char_cursor#165 ← phi( @33/(byte*) print_char_cursor#166 ) (byte*) print_line_cursor#66 ← phi( @33/(byte*) print_line_cursor#67 ) (byte[$200]) mula_sqr1_lo#0 ← { fill( $200, 0) } (byte[$200]) mula_sqr1_hi#0 ← { fill( $200, 0) } @@ -804,13 +815,13 @@ mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm to:@return mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3 (byte*) print_line_cursor#90 ← phi( main::@3/(byte*) print_line_cursor#47 ) - (byte*) print_char_cursor#164 ← phi( main::@3/(byte*) print_char_cursor#142 ) + (byte*) print_char_cursor#167 ← phi( main::@3/(byte*) print_char_cursor#145 ) (byte*) mulf_tables_cmp::asm_sqr#0 ← (byte[$200]) mula_sqr1_lo#0 (byte*) mulf_tables_cmp::kc_sqr#0 ← (byte[$200]) mulf_sqr1_lo#0 to:mulf_tables_cmp::@1 mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2 (byte*) print_line_cursor#79 ← phi( mulf_tables_cmp/(byte*) print_line_cursor#90 mulf_tables_cmp::@2/(byte*) print_line_cursor#69 ) - (byte*) print_char_cursor#156 ← phi( mulf_tables_cmp/(byte*) print_char_cursor#164 mulf_tables_cmp::@2/(byte*) print_char_cursor#157 ) + (byte*) print_char_cursor#159 ← phi( mulf_tables_cmp/(byte*) print_char_cursor#167 mulf_tables_cmp::@2/(byte*) print_char_cursor#160 ) (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(byte*) mulf_tables_cmp::asm_sqr#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(byte*) mulf_tables_cmp::kc_sqr#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) (bool~) mulf_tables_cmp::$2 ← *((byte*) mulf_tables_cmp::kc_sqr#2) != *((byte*) mulf_tables_cmp::asm_sqr#2) @@ -819,7 +830,7 @@ mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_c to:mulf_tables_cmp::@3 mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 (byte*) print_line_cursor#69 ← phi( mulf_tables_cmp::@1/(byte*) print_line_cursor#79 ) - (byte*) print_char_cursor#157 ← phi( mulf_tables_cmp::@1/(byte*) print_char_cursor#156 ) + (byte*) print_char_cursor#160 ← phi( mulf_tables_cmp::@1/(byte*) print_char_cursor#159 ) (byte*) mulf_tables_cmp::kc_sqr#3 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::kc_sqr#2 ) (byte*) mulf_tables_cmp::asm_sqr#3 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::asm_sqr#2 ) (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#3 @@ -832,7 +843,7 @@ mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 (byte*) print_line_cursor#91 ← phi( mulf_tables_cmp::@1/(byte*) print_line_cursor#79 ) (byte*) mulf_tables_cmp::kc_sqr#7 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::kc_sqr#2 ) (byte*) mulf_tables_cmp::asm_sqr#5 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::asm_sqr#2 ) - (byte*) print_char_cursor#143 ← phi( mulf_tables_cmp::@1/(byte*) print_char_cursor#156 ) + (byte*) print_char_cursor#146 ← phi( mulf_tables_cmp::@1/(byte*) print_char_cursor#159 ) *((byte*) BGCOL#0) ← (number) 2 (byte*) print_str::str#1 ← (const string) mulf_tables_cmp::str call print_str @@ -841,8 +852,8 @@ mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3 (byte*) print_line_cursor#80 ← phi( mulf_tables_cmp::@3/(byte*) print_line_cursor#91 ) (byte*) mulf_tables_cmp::kc_sqr#6 ← phi( mulf_tables_cmp::@3/(byte*) mulf_tables_cmp::kc_sqr#7 ) (byte*) mulf_tables_cmp::asm_sqr#4 ← phi( mulf_tables_cmp::@3/(byte*) mulf_tables_cmp::asm_sqr#5 ) - (byte*) print_char_cursor#92 ← phi( mulf_tables_cmp::@3/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#92 + (byte*) print_char_cursor#94 ← phi( mulf_tables_cmp::@3/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#94 (word~) mulf_tables_cmp::$5 ← ((word)) (byte*) mulf_tables_cmp::asm_sqr#4 (word) print_word::w#1 ← (word~) mulf_tables_cmp::$5 call print_word @@ -850,64 +861,64 @@ mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3 mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6 (byte*) print_line_cursor#68 ← phi( mulf_tables_cmp::@6/(byte*) print_line_cursor#80 ) (byte*) mulf_tables_cmp::kc_sqr#5 ← phi( mulf_tables_cmp::@6/(byte*) mulf_tables_cmp::kc_sqr#6 ) - (byte*) print_char_cursor#93 ← phi( mulf_tables_cmp::@6/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#93 + (byte*) print_char_cursor#95 ← phi( mulf_tables_cmp::@6/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#95 (byte*) print_str::str#2 ← (const string) mulf_tables_cmp::str1 call print_str to:mulf_tables_cmp::@8 mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7 (byte*) print_line_cursor#58 ← phi( mulf_tables_cmp::@7/(byte*) print_line_cursor#68 ) (byte*) mulf_tables_cmp::kc_sqr#4 ← phi( mulf_tables_cmp::@7/(byte*) mulf_tables_cmp::kc_sqr#5 ) - (byte*) print_char_cursor#94 ← phi( mulf_tables_cmp::@7/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#94 + (byte*) print_char_cursor#96 ← phi( mulf_tables_cmp::@7/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#96 (word~) mulf_tables_cmp::$8 ← ((word)) (byte*) mulf_tables_cmp::kc_sqr#4 (word) print_word::w#2 ← (word~) mulf_tables_cmp::$8 call print_word to:mulf_tables_cmp::@9 mulf_tables_cmp::@9: scope:[mulf_tables_cmp] from mulf_tables_cmp::@8 (byte*) print_line_cursor#48 ← phi( mulf_tables_cmp::@8/(byte*) print_line_cursor#58 ) - (byte*) print_char_cursor#95 ← phi( mulf_tables_cmp::@8/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#95 + (byte*) print_char_cursor#97 ← phi( mulf_tables_cmp::@8/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#97 to:mulf_tables_cmp::@return mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@11 mulf_tables_cmp::@9 (byte*) print_line_cursor#32 ← phi( mulf_tables_cmp::@11/(byte*) print_line_cursor#11 mulf_tables_cmp::@9/(byte*) print_line_cursor#48 ) - (byte*) print_char_cursor#96 ← phi( mulf_tables_cmp::@11/(byte*) print_char_cursor#33 mulf_tables_cmp::@9/(byte*) print_char_cursor#30 ) - (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#96 + (byte*) print_char_cursor#98 ← phi( mulf_tables_cmp::@11/(byte*) print_char_cursor#34 mulf_tables_cmp::@9/(byte*) print_char_cursor#31 ) + (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#98 (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#32 return to:@return mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2 (byte*) print_line_cursor#59 ← phi( mulf_tables_cmp::@2/(byte*) print_line_cursor#69 ) - (byte*) print_char_cursor#144 ← phi( mulf_tables_cmp::@2/(byte*) print_char_cursor#157 ) + (byte*) print_char_cursor#147 ← phi( mulf_tables_cmp::@2/(byte*) print_char_cursor#160 ) (byte*) print_str::str#3 ← (const string) mulf_tables_cmp::str2 call print_str to:mulf_tables_cmp::@10 mulf_tables_cmp::@10: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5 (byte*) print_line_cursor#49 ← phi( mulf_tables_cmp::@5/(byte*) print_line_cursor#59 ) - (byte*) print_char_cursor#97 ← phi( mulf_tables_cmp::@5/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#97 + (byte*) print_char_cursor#99 ← phi( mulf_tables_cmp::@5/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#99 call print_ln to:mulf_tables_cmp::@11 mulf_tables_cmp::@11: scope:[mulf_tables_cmp] from mulf_tables_cmp::@10 - (byte*) print_char_cursor#98 ← phi( mulf_tables_cmp::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#100 ← phi( mulf_tables_cmp::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#33 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#33 - (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#98 + (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#100 to:mulf_tables_cmp::@return mul8u_compare: scope:[mul8u_compare] from main::@4 (byte*) print_line_cursor#108 ← phi( main::@4/(byte*) print_line_cursor#6 ) - (byte*) print_char_cursor#185 ← phi( main::@4/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#188 ← phi( main::@4/(byte*) print_char_cursor#24 ) (byte) mul8u_compare::a#0 ← (byte) 0 to:mul8u_compare::@1 mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@10 (byte*) print_line_cursor#104 ← phi( mul8u_compare/(byte*) print_line_cursor#108 mul8u_compare::@10/(byte*) print_line_cursor#72 ) - (byte*) print_char_cursor#183 ← phi( mul8u_compare/(byte*) print_char_cursor#185 mul8u_compare::@10/(byte*) print_char_cursor#159 ) + (byte*) print_char_cursor#186 ← phi( mul8u_compare/(byte*) print_char_cursor#188 mul8u_compare::@10/(byte*) print_char_cursor#162 ) (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) mul8u_compare::a#0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) (byte) mul8u_compare::b#0 ← (byte) 0 to:mul8u_compare::@2 mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5 (byte*) print_line_cursor#100 ← phi( mul8u_compare::@1/(byte*) print_line_cursor#104 mul8u_compare::@5/(byte*) print_line_cursor#83 ) - (byte*) print_char_cursor#181 ← phi( mul8u_compare::@1/(byte*) print_char_cursor#183 mul8u_compare::@5/(byte*) print_char_cursor#167 ) + (byte*) print_char_cursor#184 ← phi( mul8u_compare::@1/(byte*) print_char_cursor#186 mul8u_compare::@5/(byte*) print_char_cursor#170 ) (byte) mul8u_compare::b#2 ← phi( mul8u_compare::@1/(byte) mul8u_compare::b#0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) (byte) mul8u_compare::a#2 ← phi( mul8u_compare::@1/(byte) mul8u_compare::a#7 mul8u_compare::@5/(byte) mul8u_compare::a#8 ) (byte) muls8u::a#0 ← (byte) mul8u_compare::a#2 @@ -917,7 +928,7 @@ mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare:: to:mul8u_compare::@12 mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@2 (byte*) print_line_cursor#96 ← phi( mul8u_compare::@2/(byte*) print_line_cursor#100 ) - (byte*) print_char_cursor#179 ← phi( mul8u_compare::@2/(byte*) print_char_cursor#181 ) + (byte*) print_char_cursor#182 ← phi( mul8u_compare::@2/(byte*) print_char_cursor#184 ) (byte) mul8u_compare::b#3 ← phi( mul8u_compare::@2/(byte) mul8u_compare::b#2 ) (byte) mul8u_compare::a#3 ← phi( mul8u_compare::@2/(byte) mul8u_compare::a#2 ) (word) muls8u::return#4 ← phi( mul8u_compare::@2/(word) muls8u::return#2 ) @@ -930,7 +941,7 @@ mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@2 to:mul8u_compare::@13 mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@12 (byte*) print_line_cursor#92 ← phi( mul8u_compare::@12/(byte*) print_line_cursor#96 ) - (byte*) print_char_cursor#177 ← phi( mul8u_compare::@12/(byte*) print_char_cursor#179 ) + (byte*) print_char_cursor#180 ← phi( mul8u_compare::@12/(byte*) print_char_cursor#182 ) (word) mul8u_compare::ms#4 ← phi( mul8u_compare::@12/(word) mul8u_compare::ms#0 ) (byte) mul8u_compare::b#4 ← phi( mul8u_compare::@12/(byte) mul8u_compare::b#3 ) (byte) mul8u_compare::a#4 ← phi( mul8u_compare::@12/(byte) mul8u_compare::a#3 ) @@ -944,7 +955,7 @@ mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@12 to:mul8u_compare::@14 mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@13 (byte*) print_line_cursor#81 ← phi( mul8u_compare::@13/(byte*) print_line_cursor#92 ) - (byte*) print_char_cursor#172 ← phi( mul8u_compare::@13/(byte*) print_char_cursor#177 ) + (byte*) print_char_cursor#175 ← phi( mul8u_compare::@13/(byte*) print_char_cursor#180 ) (byte) mul8u_compare::a#12 ← phi( mul8u_compare::@13/(byte) mul8u_compare::a#4 ) (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@13/(byte) mul8u_compare::b#4 ) (word) mul8u_compare::mf#1 ← phi( mul8u_compare::@13/(word) mul8u_compare::mf#0 ) @@ -959,7 +970,7 @@ mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@13 to:mul8u_compare::@6 mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@6 (byte*) print_line_cursor#70 ← phi( mul8u_compare::@14/(byte*) print_line_cursor#81 mul8u_compare::@6/(byte*) print_line_cursor#82 ) - (byte*) print_char_cursor#165 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#172 mul8u_compare::@6/(byte*) print_char_cursor#173 ) + (byte*) print_char_cursor#168 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#175 mul8u_compare::@6/(byte*) print_char_cursor#176 ) (word) mul8u_compare::mf#4 ← phi( mul8u_compare::@14/(word) mul8u_compare::mf#1 mul8u_compare::@6/(word) mul8u_compare::mf#6 ) (byte) mul8u_compare::a#10 ← phi( mul8u_compare::@14/(byte) mul8u_compare::a#12 mul8u_compare::@6/(byte) mul8u_compare::a#13 ) (byte) mul8u_compare::b#8 ← phi( mul8u_compare::@14/(byte) mul8u_compare::b#10 mul8u_compare::@6/(byte) mul8u_compare::b#11 ) @@ -972,7 +983,7 @@ mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare: to:mul8u_compare::@7 mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@14 (byte*) print_line_cursor#82 ← phi( mul8u_compare::@14/(byte*) print_line_cursor#81 ) - (byte*) print_char_cursor#173 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#172 ) + (byte*) print_char_cursor#176 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#175 ) (word) mul8u_compare::mf#6 ← phi( mul8u_compare::@14/(word) mul8u_compare::mf#1 ) (byte) mul8u_compare::a#13 ← phi( mul8u_compare::@14/(byte) mul8u_compare::a#12 ) (byte) mul8u_compare::b#11 ← phi( mul8u_compare::@14/(byte) mul8u_compare::b#10 ) @@ -982,7 +993,7 @@ mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@14 to:mul8u_compare::@3 mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@3 mul8u_compare::@7 (byte*) print_line_cursor#60 ← phi( mul8u_compare::@3/(byte*) print_line_cursor#70 mul8u_compare::@7/(byte*) print_line_cursor#71 ) - (byte*) print_char_cursor#158 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#165 mul8u_compare::@7/(byte*) print_char_cursor#166 ) + (byte*) print_char_cursor#161 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#168 mul8u_compare::@7/(byte*) print_char_cursor#169 ) (word) mul8u_compare::mf#3 ← phi( mul8u_compare::@3/(word) mul8u_compare::mf#4 mul8u_compare::@7/(word) mul8u_compare::mf#5 ) (word) mul8u_compare::mn#4 ← phi( mul8u_compare::@3/(word) mul8u_compare::mn#1 mul8u_compare::@7/(word) mul8u_compare::mn#5 ) (word) mul8u_compare::ms#6 ← phi( mul8u_compare::@3/(word) mul8u_compare::ms#2 mul8u_compare::@7/(word) mul8u_compare::ms#7 ) @@ -995,7 +1006,7 @@ mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@3 mul8u_compare:: to:mul8u_compare::@8 mul8u_compare::@7: scope:[mul8u_compare] from mul8u_compare::@3 (byte*) print_line_cursor#71 ← phi( mul8u_compare::@3/(byte*) print_line_cursor#70 ) - (byte*) print_char_cursor#166 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#165 ) + (byte*) print_char_cursor#169 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#168 ) (word) mul8u_compare::mf#5 ← phi( mul8u_compare::@3/(word) mul8u_compare::mf#4 ) (word) mul8u_compare::mn#5 ← phi( mul8u_compare::@3/(word) mul8u_compare::mn#1 ) (word) mul8u_compare::ms#7 ← phi( mul8u_compare::@3/(word) mul8u_compare::ms#2 ) @@ -1005,7 +1016,7 @@ mul8u_compare::@7: scope:[mul8u_compare] from mul8u_compare::@3 to:mul8u_compare::@4 mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4 (byte*) print_line_cursor#83 ← phi( mul8u_compare::@4/(byte*) print_line_cursor#60 ) - (byte*) print_char_cursor#167 ← phi( mul8u_compare::@4/(byte*) print_char_cursor#158 ) + (byte*) print_char_cursor#170 ← phi( mul8u_compare::@4/(byte*) print_char_cursor#161 ) (byte) mul8u_compare::a#8 ← phi( mul8u_compare::@4/(byte) mul8u_compare::a#9 ) (byte) mul8u_compare::b#5 ← phi( mul8u_compare::@4/(byte) mul8u_compare::b#7 ) (byte) mul8u_compare::b#1 ← (byte) mul8u_compare::b#5 + rangenext(0,$ff) @@ -1014,7 +1025,7 @@ mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4 to:mul8u_compare::@10 mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@4 (byte*) print_line_cursor#50 ← phi( mul8u_compare::@4/(byte*) print_line_cursor#60 ) - (byte*) print_char_cursor#145 ← phi( mul8u_compare::@4/(byte*) print_char_cursor#158 ) + (byte*) print_char_cursor#148 ← phi( mul8u_compare::@4/(byte*) print_char_cursor#161 ) (word) mul8u_compare::mf#2 ← phi( mul8u_compare::@4/(word) mul8u_compare::mf#3 ) (word) mul8u_compare::mn#2 ← phi( mul8u_compare::@4/(word) mul8u_compare::mn#4 ) (word) mul8u_compare::ms#3 ← phi( mul8u_compare::@4/(word) mul8u_compare::ms#6 ) @@ -1030,20 +1041,20 @@ mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@4 to:mul8u_compare::@15 mul8u_compare::@15: scope:[mul8u_compare] from mul8u_compare::@8 (byte*) print_line_cursor#34 ← phi( mul8u_compare::@8/(byte*) print_line_cursor#16 ) - (byte*) print_char_cursor#99 ← phi( mul8u_compare::@8/(byte*) print_char_cursor#49 ) - (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#99 + (byte*) print_char_cursor#101 ← phi( mul8u_compare::@8/(byte*) print_char_cursor#50 ) + (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#101 (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#34 to:mul8u_compare::@return mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@15 mul8u_compare::@17 (byte*) print_line_cursor#35 ← phi( mul8u_compare::@15/(byte*) print_line_cursor#12 mul8u_compare::@17/(byte*) print_line_cursor#14 ) - (byte*) print_char_cursor#100 ← phi( mul8u_compare::@15/(byte*) print_char_cursor#34 mul8u_compare::@17/(byte*) print_char_cursor#37 ) - (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#100 + (byte*) print_char_cursor#102 ← phi( mul8u_compare::@15/(byte*) print_char_cursor#35 mul8u_compare::@17/(byte*) print_char_cursor#38 ) + (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#102 (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#35 return to:@return mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@5 (byte*) print_line_cursor#72 ← phi( mul8u_compare::@5/(byte*) print_line_cursor#83 ) - (byte*) print_char_cursor#159 ← phi( mul8u_compare::@5/(byte*) print_char_cursor#167 ) + (byte*) print_char_cursor#162 ← phi( mul8u_compare::@5/(byte*) print_char_cursor#170 ) (byte) mul8u_compare::a#6 ← phi( mul8u_compare::@5/(byte) mul8u_compare::a#8 ) (byte) mul8u_compare::a#1 ← (byte) mul8u_compare::a#6 + rangenext(0,$ff) (bool~) mul8u_compare::$13 ← (byte) mul8u_compare::a#1 != rangelast(0,$ff) @@ -1051,21 +1062,21 @@ mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@5 to:mul8u_compare::@11 mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10 (byte*) print_line_cursor#61 ← phi( mul8u_compare::@10/(byte*) print_line_cursor#72 ) - (byte*) print_char_cursor#146 ← phi( mul8u_compare::@10/(byte*) print_char_cursor#159 ) + (byte*) print_char_cursor#149 ← phi( mul8u_compare::@10/(byte*) print_char_cursor#162 ) (byte*) print_str::str#4 ← (const string) mul8u_compare::str call print_str to:mul8u_compare::@16 mul8u_compare::@16: scope:[mul8u_compare] from mul8u_compare::@11 (byte*) print_line_cursor#51 ← phi( mul8u_compare::@11/(byte*) print_line_cursor#61 ) - (byte*) print_char_cursor#101 ← phi( mul8u_compare::@11/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#101 + (byte*) print_char_cursor#103 ← phi( mul8u_compare::@11/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#103 call print_ln to:mul8u_compare::@17 mul8u_compare::@17: scope:[mul8u_compare] from mul8u_compare::@16 - (byte*) print_char_cursor#102 ← phi( mul8u_compare::@16/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#104 ← phi( mul8u_compare::@16/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#36 ← phi( mul8u_compare::@16/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#36 - (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#102 + (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#104 to:mul8u_compare::@return mul8u_error: scope:[mul8u_error] from mul8u_compare::@8 (byte*) print_line_cursor#114 ← phi( mul8u_compare::@8/(byte*) print_line_cursor#50 ) @@ -1074,7 +1085,7 @@ mul8u_error: scope:[mul8u_error] from mul8u_compare::@8 (word) mul8u_error::ms#6 ← phi( mul8u_compare::@8/(word) mul8u_error::ms#0 ) (byte) mul8u_error::b#4 ← phi( mul8u_compare::@8/(byte) mul8u_error::b#0 ) (byte) mul8u_error::a#2 ← phi( mul8u_compare::@8/(byte) mul8u_error::a#0 ) - (byte*) print_char_cursor#147 ← phi( mul8u_compare::@8/(byte*) print_char_cursor#145 ) + (byte*) print_char_cursor#150 ← phi( mul8u_compare::@8/(byte*) print_char_cursor#148 ) (byte*) print_str::str#5 ← (const string) mul8u_error::str call print_str to:mul8u_error::@1 @@ -1085,8 +1096,8 @@ mul8u_error::@1: scope:[mul8u_error] from mul8u_error (word) mul8u_error::ms#5 ← phi( mul8u_error/(word) mul8u_error::ms#6 ) (byte) mul8u_error::b#3 ← phi( mul8u_error/(byte) mul8u_error::b#4 ) (byte) mul8u_error::a#1 ← phi( mul8u_error/(byte) mul8u_error::a#2 ) - (byte*) print_char_cursor#103 ← phi( mul8u_error/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#103 + (byte*) print_char_cursor#105 ← phi( mul8u_error/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#105 (byte) print_byte::b#3 ← (byte) mul8u_error::a#1 call print_byte to:mul8u_error::@2 @@ -1096,8 +1107,8 @@ mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 (word) mul8u_error::mn#6 ← phi( mul8u_error::@1/(word) mul8u_error::mn#7 ) (word) mul8u_error::ms#4 ← phi( mul8u_error::@1/(word) mul8u_error::ms#5 ) (byte) mul8u_error::b#2 ← phi( mul8u_error::@1/(byte) mul8u_error::b#3 ) - (byte*) print_char_cursor#104 ← phi( mul8u_error::@1/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#104 + (byte*) print_char_cursor#106 ← phi( mul8u_error::@1/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#106 (byte*) print_str::str#6 ← (const string) mul8u_error::str1 call print_str to:mul8u_error::@3 @@ -1107,8 +1118,8 @@ mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 (word) mul8u_error::mn#5 ← phi( mul8u_error::@2/(word) mul8u_error::mn#6 ) (word) mul8u_error::ms#3 ← phi( mul8u_error::@2/(word) mul8u_error::ms#4 ) (byte) mul8u_error::b#1 ← phi( mul8u_error::@2/(byte) mul8u_error::b#2 ) - (byte*) print_char_cursor#105 ← phi( mul8u_error::@2/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#105 + (byte*) print_char_cursor#107 ← phi( mul8u_error::@2/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#107 (byte) print_byte::b#4 ← (byte) mul8u_error::b#1 call print_byte to:mul8u_error::@4 @@ -1117,8 +1128,8 @@ mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 (word) mul8u_error::mf#6 ← phi( mul8u_error::@3/(word) mul8u_error::mf#7 ) (word) mul8u_error::mn#4 ← phi( mul8u_error::@3/(word) mul8u_error::mn#5 ) (word) mul8u_error::ms#2 ← phi( mul8u_error::@3/(word) mul8u_error::ms#3 ) - (byte*) print_char_cursor#106 ← phi( mul8u_error::@3/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#106 + (byte*) print_char_cursor#108 ← phi( mul8u_error::@3/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#108 (byte*) print_str::str#7 ← (const string) mul8u_error::str2 call print_str to:mul8u_error::@5 @@ -1127,8 +1138,8 @@ mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 (word) mul8u_error::mf#5 ← phi( mul8u_error::@4/(word) mul8u_error::mf#6 ) (word) mul8u_error::mn#3 ← phi( mul8u_error::@4/(word) mul8u_error::mn#4 ) (word) mul8u_error::ms#1 ← phi( mul8u_error::@4/(word) mul8u_error::ms#2 ) - (byte*) print_char_cursor#107 ← phi( mul8u_error::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#107 + (byte*) print_char_cursor#109 ← phi( mul8u_error::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#109 (word) print_word::w#3 ← (word) mul8u_error::ms#1 call print_word to:mul8u_error::@6 @@ -1136,8 +1147,8 @@ mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 (byte*) print_line_cursor#93 ← phi( mul8u_error::@5/(byte*) print_line_cursor#97 ) (word) mul8u_error::mf#4 ← phi( mul8u_error::@5/(word) mul8u_error::mf#5 ) (word) mul8u_error::mn#2 ← phi( mul8u_error::@5/(word) mul8u_error::mn#3 ) - (byte*) print_char_cursor#108 ← phi( mul8u_error::@5/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#108 + (byte*) print_char_cursor#110 ← phi( mul8u_error::@5/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#110 (byte*) print_str::str#8 ← (const string) mul8u_error::str3 call print_str to:mul8u_error::@7 @@ -1145,60 +1156,60 @@ mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 (byte*) print_line_cursor#84 ← phi( mul8u_error::@6/(byte*) print_line_cursor#93 ) (word) mul8u_error::mf#3 ← phi( mul8u_error::@6/(word) mul8u_error::mf#4 ) (word) mul8u_error::mn#1 ← phi( mul8u_error::@6/(word) mul8u_error::mn#2 ) - (byte*) print_char_cursor#109 ← phi( mul8u_error::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#109 + (byte*) print_char_cursor#111 ← phi( mul8u_error::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#111 (word) print_word::w#4 ← (word) mul8u_error::mn#1 call print_word to:mul8u_error::@8 mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 (byte*) print_line_cursor#73 ← phi( mul8u_error::@7/(byte*) print_line_cursor#84 ) (word) mul8u_error::mf#2 ← phi( mul8u_error::@7/(word) mul8u_error::mf#3 ) - (byte*) print_char_cursor#110 ← phi( mul8u_error::@7/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#110 + (byte*) print_char_cursor#112 ← phi( mul8u_error::@7/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#112 (byte*) print_str::str#9 ← (const string) mul8u_error::str4 call print_str to:mul8u_error::@9 mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8 (byte*) print_line_cursor#62 ← phi( mul8u_error::@8/(byte*) print_line_cursor#73 ) (word) mul8u_error::mf#1 ← phi( mul8u_error::@8/(word) mul8u_error::mf#2 ) - (byte*) print_char_cursor#111 ← phi( mul8u_error::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#111 + (byte*) print_char_cursor#113 ← phi( mul8u_error::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#113 (word) print_word::w#5 ← (word) mul8u_error::mf#1 call print_word to:mul8u_error::@10 mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9 (byte*) print_line_cursor#52 ← phi( mul8u_error::@9/(byte*) print_line_cursor#62 ) - (byte*) print_char_cursor#112 ← phi( mul8u_error::@9/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#112 + (byte*) print_char_cursor#114 ← phi( mul8u_error::@9/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#114 call print_ln to:mul8u_error::@11 mul8u_error::@11: scope:[mul8u_error] from mul8u_error::@10 - (byte*) print_char_cursor#113 ← phi( mul8u_error::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#115 ← phi( mul8u_error::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#37 ← phi( mul8u_error::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#37 - (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#113 + (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#115 to:mul8u_error::@return mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@11 (byte*) print_line_cursor#38 ← phi( mul8u_error::@11/(byte*) print_line_cursor#15 ) - (byte*) print_char_cursor#114 ← phi( mul8u_error::@11/(byte*) print_char_cursor#48 ) - (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#114 + (byte*) print_char_cursor#116 ← phi( mul8u_error::@11/(byte*) print_char_cursor#49 ) + (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#116 (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#38 return to:@return mul8s_compare: scope:[mul8s_compare] from main::@5 (byte*) print_line_cursor#110 ← phi( main::@5/(byte*) print_line_cursor#7 ) - (byte*) print_char_cursor#186 ← phi( main::@5/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#189 ← phi( main::@5/(byte*) print_char_cursor#25 ) (signed byte) mul8s_compare::a#0 ← (number) -$80 to:mul8s_compare::@1 mul8s_compare::@1: scope:[mul8s_compare] from mul8s_compare mul8s_compare::@10 (byte*) print_line_cursor#106 ← phi( mul8s_compare/(byte*) print_line_cursor#110 mul8s_compare::@10/(byte*) print_line_cursor#76 ) - (byte*) print_char_cursor#184 ← phi( mul8s_compare/(byte*) print_char_cursor#186 mul8s_compare::@10/(byte*) print_char_cursor#161 ) + (byte*) print_char_cursor#187 ← phi( mul8s_compare/(byte*) print_char_cursor#189 mul8s_compare::@10/(byte*) print_char_cursor#164 ) (signed byte) mul8s_compare::a#7 ← phi( mul8s_compare/(signed byte) mul8s_compare::a#0 mul8s_compare::@10/(signed byte) mul8s_compare::a#1 ) (signed byte) mul8s_compare::b#0 ← (number) -$80 to:mul8s_compare::@2 mul8s_compare::@2: scope:[mul8s_compare] from mul8s_compare::@1 mul8s_compare::@5 (byte*) print_line_cursor#102 ← phi( mul8s_compare::@1/(byte*) print_line_cursor#106 mul8s_compare::@5/(byte*) print_line_cursor#87 ) - (byte*) print_char_cursor#182 ← phi( mul8s_compare::@1/(byte*) print_char_cursor#184 mul8s_compare::@5/(byte*) print_char_cursor#170 ) + (byte*) print_char_cursor#185 ← phi( mul8s_compare::@1/(byte*) print_char_cursor#187 mul8s_compare::@5/(byte*) print_char_cursor#173 ) (signed byte) mul8s_compare::b#2 ← phi( mul8s_compare::@1/(signed byte) mul8s_compare::b#0 mul8s_compare::@5/(signed byte) mul8s_compare::b#1 ) (signed byte) mul8s_compare::a#2 ← phi( mul8s_compare::@1/(signed byte) mul8s_compare::a#7 mul8s_compare::@5/(signed byte) mul8s_compare::a#8 ) (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#2 @@ -1208,7 +1219,7 @@ mul8s_compare::@2: scope:[mul8s_compare] from mul8s_compare::@1 mul8s_compare:: to:mul8s_compare::@12 mul8s_compare::@12: scope:[mul8s_compare] from mul8s_compare::@2 (byte*) print_line_cursor#98 ← phi( mul8s_compare::@2/(byte*) print_line_cursor#102 ) - (byte*) print_char_cursor#180 ← phi( mul8s_compare::@2/(byte*) print_char_cursor#182 ) + (byte*) print_char_cursor#183 ← phi( mul8s_compare::@2/(byte*) print_char_cursor#185 ) (signed byte) mul8s_compare::b#3 ← phi( mul8s_compare::@2/(signed byte) mul8s_compare::b#2 ) (signed byte) mul8s_compare::a#3 ← phi( mul8s_compare::@2/(signed byte) mul8s_compare::a#2 ) (signed word) muls8s::return#4 ← phi( mul8s_compare::@2/(signed word) muls8s::return#2 ) @@ -1221,7 +1232,7 @@ mul8s_compare::@12: scope:[mul8s_compare] from mul8s_compare::@2 to:mul8s_compare::@13 mul8s_compare::@13: scope:[mul8s_compare] from mul8s_compare::@12 (byte*) print_line_cursor#94 ← phi( mul8s_compare::@12/(byte*) print_line_cursor#98 ) - (byte*) print_char_cursor#178 ← phi( mul8s_compare::@12/(byte*) print_char_cursor#180 ) + (byte*) print_char_cursor#181 ← phi( mul8s_compare::@12/(byte*) print_char_cursor#183 ) (signed word) mul8s_compare::ms#4 ← phi( mul8s_compare::@12/(signed word) mul8s_compare::ms#0 ) (signed byte) mul8s_compare::b#4 ← phi( mul8s_compare::@12/(signed byte) mul8s_compare::b#3 ) (signed byte) mul8s_compare::a#4 ← phi( mul8s_compare::@12/(signed byte) mul8s_compare::a#3 ) @@ -1235,7 +1246,7 @@ mul8s_compare::@13: scope:[mul8s_compare] from mul8s_compare::@12 to:mul8s_compare::@14 mul8s_compare::@14: scope:[mul8s_compare] from mul8s_compare::@13 (byte*) print_line_cursor#85 ← phi( mul8s_compare::@13/(byte*) print_line_cursor#94 ) - (byte*) print_char_cursor#174 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#178 ) + (byte*) print_char_cursor#177 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#181 ) (signed byte) mul8s_compare::a#12 ← phi( mul8s_compare::@13/(signed byte) mul8s_compare::a#4 ) (signed byte) mul8s_compare::b#10 ← phi( mul8s_compare::@13/(signed byte) mul8s_compare::b#4 ) (signed word) mul8s_compare::mf#1 ← phi( mul8s_compare::@13/(signed word) mul8s_compare::mf#0 ) @@ -1250,7 +1261,7 @@ mul8s_compare::@14: scope:[mul8s_compare] from mul8s_compare::@13 to:mul8s_compare::@6 mul8s_compare::@3: scope:[mul8s_compare] from mul8s_compare::@14 mul8s_compare::@6 (byte*) print_line_cursor#74 ← phi( mul8s_compare::@14/(byte*) print_line_cursor#85 mul8s_compare::@6/(byte*) print_line_cursor#86 ) - (byte*) print_char_cursor#168 ← phi( mul8s_compare::@14/(byte*) print_char_cursor#174 mul8s_compare::@6/(byte*) print_char_cursor#175 ) + (byte*) print_char_cursor#171 ← phi( mul8s_compare::@14/(byte*) print_char_cursor#177 mul8s_compare::@6/(byte*) print_char_cursor#178 ) (signed word) mul8s_compare::mf#4 ← phi( mul8s_compare::@14/(signed word) mul8s_compare::mf#1 mul8s_compare::@6/(signed word) mul8s_compare::mf#6 ) (signed byte) mul8s_compare::a#10 ← phi( mul8s_compare::@14/(signed byte) mul8s_compare::a#12 mul8s_compare::@6/(signed byte) mul8s_compare::a#13 ) (signed byte) mul8s_compare::b#8 ← phi( mul8s_compare::@14/(signed byte) mul8s_compare::b#10 mul8s_compare::@6/(signed byte) mul8s_compare::b#11 ) @@ -1263,7 +1274,7 @@ mul8s_compare::@3: scope:[mul8s_compare] from mul8s_compare::@14 mul8s_compare: to:mul8s_compare::@7 mul8s_compare::@6: scope:[mul8s_compare] from mul8s_compare::@14 (byte*) print_line_cursor#86 ← phi( mul8s_compare::@14/(byte*) print_line_cursor#85 ) - (byte*) print_char_cursor#175 ← phi( mul8s_compare::@14/(byte*) print_char_cursor#174 ) + (byte*) print_char_cursor#178 ← phi( mul8s_compare::@14/(byte*) print_char_cursor#177 ) (signed word) mul8s_compare::mf#6 ← phi( mul8s_compare::@14/(signed word) mul8s_compare::mf#1 ) (signed byte) mul8s_compare::a#13 ← phi( mul8s_compare::@14/(signed byte) mul8s_compare::a#12 ) (signed byte) mul8s_compare::b#11 ← phi( mul8s_compare::@14/(signed byte) mul8s_compare::b#10 ) @@ -1273,7 +1284,7 @@ mul8s_compare::@6: scope:[mul8s_compare] from mul8s_compare::@14 to:mul8s_compare::@3 mul8s_compare::@4: scope:[mul8s_compare] from mul8s_compare::@3 mul8s_compare::@7 (byte*) print_line_cursor#63 ← phi( mul8s_compare::@3/(byte*) print_line_cursor#74 mul8s_compare::@7/(byte*) print_line_cursor#75 ) - (byte*) print_char_cursor#160 ← phi( mul8s_compare::@3/(byte*) print_char_cursor#168 mul8s_compare::@7/(byte*) print_char_cursor#169 ) + (byte*) print_char_cursor#163 ← phi( mul8s_compare::@3/(byte*) print_char_cursor#171 mul8s_compare::@7/(byte*) print_char_cursor#172 ) (signed word) mul8s_compare::mf#3 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::mf#4 mul8s_compare::@7/(signed word) mul8s_compare::mf#5 ) (signed word) mul8s_compare::mn#4 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::mn#1 mul8s_compare::@7/(signed word) mul8s_compare::mn#5 ) (signed word) mul8s_compare::ms#6 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::ms#2 mul8s_compare::@7/(signed word) mul8s_compare::ms#7 ) @@ -1286,7 +1297,7 @@ mul8s_compare::@4: scope:[mul8s_compare] from mul8s_compare::@3 mul8s_compare:: to:mul8s_compare::@8 mul8s_compare::@7: scope:[mul8s_compare] from mul8s_compare::@3 (byte*) print_line_cursor#75 ← phi( mul8s_compare::@3/(byte*) print_line_cursor#74 ) - (byte*) print_char_cursor#169 ← phi( mul8s_compare::@3/(byte*) print_char_cursor#168 ) + (byte*) print_char_cursor#172 ← phi( mul8s_compare::@3/(byte*) print_char_cursor#171 ) (signed word) mul8s_compare::mf#5 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::mf#4 ) (signed word) mul8s_compare::mn#5 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::mn#1 ) (signed word) mul8s_compare::ms#7 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::ms#2 ) @@ -1296,7 +1307,7 @@ mul8s_compare::@7: scope:[mul8s_compare] from mul8s_compare::@3 to:mul8s_compare::@4 mul8s_compare::@5: scope:[mul8s_compare] from mul8s_compare::@4 (byte*) print_line_cursor#87 ← phi( mul8s_compare::@4/(byte*) print_line_cursor#63 ) - (byte*) print_char_cursor#170 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#160 ) + (byte*) print_char_cursor#173 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#163 ) (signed byte) mul8s_compare::a#8 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::a#9 ) (signed byte) mul8s_compare::b#5 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::b#7 ) (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#5 @@ -1305,7 +1316,7 @@ mul8s_compare::@5: scope:[mul8s_compare] from mul8s_compare::@4 to:mul8s_compare::@10 mul8s_compare::@8: scope:[mul8s_compare] from mul8s_compare::@4 (byte*) print_line_cursor#53 ← phi( mul8s_compare::@4/(byte*) print_line_cursor#63 ) - (byte*) print_char_cursor#148 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#160 ) + (byte*) print_char_cursor#151 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#163 ) (signed word) mul8s_compare::mf#2 ← phi( mul8s_compare::@4/(signed word) mul8s_compare::mf#3 ) (signed word) mul8s_compare::mn#2 ← phi( mul8s_compare::@4/(signed word) mul8s_compare::mn#4 ) (signed word) mul8s_compare::ms#3 ← phi( mul8s_compare::@4/(signed word) mul8s_compare::ms#6 ) @@ -1321,20 +1332,20 @@ mul8s_compare::@8: scope:[mul8s_compare] from mul8s_compare::@4 to:mul8s_compare::@15 mul8s_compare::@15: scope:[mul8s_compare] from mul8s_compare::@8 (byte*) print_line_cursor#39 ← phi( mul8s_compare::@8/(byte*) print_line_cursor#21 ) - (byte*) print_char_cursor#115 ← phi( mul8s_compare::@8/(byte*) print_char_cursor#65 ) - (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#115 + (byte*) print_char_cursor#117 ← phi( mul8s_compare::@8/(byte*) print_char_cursor#66 ) + (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#117 (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#39 to:mul8s_compare::@return mul8s_compare::@return: scope:[mul8s_compare] from mul8s_compare::@15 mul8s_compare::@17 (byte*) print_line_cursor#40 ← phi( mul8s_compare::@15/(byte*) print_line_cursor#17 mul8s_compare::@17/(byte*) print_line_cursor#19 ) - (byte*) print_char_cursor#116 ← phi( mul8s_compare::@15/(byte*) print_char_cursor#50 mul8s_compare::@17/(byte*) print_char_cursor#53 ) - (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#116 + (byte*) print_char_cursor#118 ← phi( mul8s_compare::@15/(byte*) print_char_cursor#51 mul8s_compare::@17/(byte*) print_char_cursor#54 ) + (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#118 (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#40 return to:@return mul8s_compare::@10: scope:[mul8s_compare] from mul8s_compare::@5 (byte*) print_line_cursor#76 ← phi( mul8s_compare::@5/(byte*) print_line_cursor#87 ) - (byte*) print_char_cursor#161 ← phi( mul8s_compare::@5/(byte*) print_char_cursor#170 ) + (byte*) print_char_cursor#164 ← phi( mul8s_compare::@5/(byte*) print_char_cursor#173 ) (signed byte) mul8s_compare::a#6 ← phi( mul8s_compare::@5/(signed byte) mul8s_compare::a#8 ) (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#6 (bool~) mul8s_compare::$13 ← (signed byte) mul8s_compare::a#1 != (number) -$80 @@ -1342,21 +1353,21 @@ mul8s_compare::@10: scope:[mul8s_compare] from mul8s_compare::@5 to:mul8s_compare::@11 mul8s_compare::@11: scope:[mul8s_compare] from mul8s_compare::@10 (byte*) print_line_cursor#64 ← phi( mul8s_compare::@10/(byte*) print_line_cursor#76 ) - (byte*) print_char_cursor#149 ← phi( mul8s_compare::@10/(byte*) print_char_cursor#161 ) + (byte*) print_char_cursor#152 ← phi( mul8s_compare::@10/(byte*) print_char_cursor#164 ) (byte*) print_str::str#10 ← (const string) mul8s_compare::str call print_str to:mul8s_compare::@16 mul8s_compare::@16: scope:[mul8s_compare] from mul8s_compare::@11 (byte*) print_line_cursor#54 ← phi( mul8s_compare::@11/(byte*) print_line_cursor#64 ) - (byte*) print_char_cursor#117 ← phi( mul8s_compare::@11/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#117 + (byte*) print_char_cursor#119 ← phi( mul8s_compare::@11/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#119 call print_ln to:mul8s_compare::@17 mul8s_compare::@17: scope:[mul8s_compare] from mul8s_compare::@16 - (byte*) print_char_cursor#118 ← phi( mul8s_compare::@16/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#120 ← phi( mul8s_compare::@16/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#41 ← phi( mul8s_compare::@16/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#41 - (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#118 + (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#120 to:mul8s_compare::@return mul8s_error: scope:[mul8s_error] from mul8s_compare::@8 (byte*) print_line_cursor#115 ← phi( mul8s_compare::@8/(byte*) print_line_cursor#53 ) @@ -1365,7 +1376,7 @@ mul8s_error: scope:[mul8s_error] from mul8s_compare::@8 (signed word) mul8s_error::ms#6 ← phi( mul8s_compare::@8/(signed word) mul8s_error::ms#0 ) (signed byte) mul8s_error::b#4 ← phi( mul8s_compare::@8/(signed byte) mul8s_error::b#0 ) (signed byte) mul8s_error::a#2 ← phi( mul8s_compare::@8/(signed byte) mul8s_error::a#0 ) - (byte*) print_char_cursor#150 ← phi( mul8s_compare::@8/(byte*) print_char_cursor#148 ) + (byte*) print_char_cursor#153 ← phi( mul8s_compare::@8/(byte*) print_char_cursor#151 ) (byte*) print_str::str#11 ← (const string) mul8s_error::str call print_str to:mul8s_error::@1 @@ -1376,8 +1387,8 @@ mul8s_error::@1: scope:[mul8s_error] from mul8s_error (signed word) mul8s_error::ms#5 ← phi( mul8s_error/(signed word) mul8s_error::ms#6 ) (signed byte) mul8s_error::b#3 ← phi( mul8s_error/(signed byte) mul8s_error::b#4 ) (signed byte) mul8s_error::a#1 ← phi( mul8s_error/(signed byte) mul8s_error::a#2 ) - (byte*) print_char_cursor#119 ← phi( mul8s_error/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#119 + (byte*) print_char_cursor#121 ← phi( mul8s_error/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#121 (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#1 call print_sbyte to:mul8s_error::@2 @@ -1387,8 +1398,8 @@ mul8s_error::@2: scope:[mul8s_error] from mul8s_error::@1 (signed word) mul8s_error::mn#6 ← phi( mul8s_error::@1/(signed word) mul8s_error::mn#7 ) (signed word) mul8s_error::ms#4 ← phi( mul8s_error::@1/(signed word) mul8s_error::ms#5 ) (signed byte) mul8s_error::b#2 ← phi( mul8s_error::@1/(signed byte) mul8s_error::b#3 ) - (byte*) print_char_cursor#120 ← phi( mul8s_error::@1/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#120 + (byte*) print_char_cursor#122 ← phi( mul8s_error::@1/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#122 (byte*) print_str::str#12 ← (const string) mul8s_error::str1 call print_str to:mul8s_error::@3 @@ -1398,8 +1409,8 @@ mul8s_error::@3: scope:[mul8s_error] from mul8s_error::@2 (signed word) mul8s_error::mn#5 ← phi( mul8s_error::@2/(signed word) mul8s_error::mn#6 ) (signed word) mul8s_error::ms#3 ← phi( mul8s_error::@2/(signed word) mul8s_error::ms#4 ) (signed byte) mul8s_error::b#1 ← phi( mul8s_error::@2/(signed byte) mul8s_error::b#2 ) - (byte*) print_char_cursor#121 ← phi( mul8s_error::@2/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#121 + (byte*) print_char_cursor#123 ← phi( mul8s_error::@2/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#123 (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#1 call print_sbyte to:mul8s_error::@4 @@ -1408,8 +1419,8 @@ mul8s_error::@4: scope:[mul8s_error] from mul8s_error::@3 (signed word) mul8s_error::mf#6 ← phi( mul8s_error::@3/(signed word) mul8s_error::mf#7 ) (signed word) mul8s_error::mn#4 ← phi( mul8s_error::@3/(signed word) mul8s_error::mn#5 ) (signed word) mul8s_error::ms#2 ← phi( mul8s_error::@3/(signed word) mul8s_error::ms#3 ) - (byte*) print_char_cursor#122 ← phi( mul8s_error::@3/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#122 + (byte*) print_char_cursor#124 ← phi( mul8s_error::@3/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#124 (byte*) print_str::str#13 ← (const string) mul8s_error::str2 call print_str to:mul8s_error::@5 @@ -1418,8 +1429,8 @@ mul8s_error::@5: scope:[mul8s_error] from mul8s_error::@4 (signed word) mul8s_error::mf#5 ← phi( mul8s_error::@4/(signed word) mul8s_error::mf#6 ) (signed word) mul8s_error::mn#3 ← phi( mul8s_error::@4/(signed word) mul8s_error::mn#4 ) (signed word) mul8s_error::ms#1 ← phi( mul8s_error::@4/(signed word) mul8s_error::ms#2 ) - (byte*) print_char_cursor#123 ← phi( mul8s_error::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#123 + (byte*) print_char_cursor#125 ← phi( mul8s_error::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#125 (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#1 call print_sword to:mul8s_error::@6 @@ -1427,8 +1438,8 @@ mul8s_error::@6: scope:[mul8s_error] from mul8s_error::@5 (byte*) print_line_cursor#95 ← phi( mul8s_error::@5/(byte*) print_line_cursor#99 ) (signed word) mul8s_error::mf#4 ← phi( mul8s_error::@5/(signed word) mul8s_error::mf#5 ) (signed word) mul8s_error::mn#2 ← phi( mul8s_error::@5/(signed word) mul8s_error::mn#3 ) - (byte*) print_char_cursor#124 ← phi( mul8s_error::@5/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#124 + (byte*) print_char_cursor#126 ← phi( mul8s_error::@5/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#126 (byte*) print_str::str#14 ← (const string) mul8s_error::str3 call print_str to:mul8s_error::@7 @@ -1436,57 +1447,57 @@ mul8s_error::@7: scope:[mul8s_error] from mul8s_error::@6 (byte*) print_line_cursor#88 ← phi( mul8s_error::@6/(byte*) print_line_cursor#95 ) (signed word) mul8s_error::mf#3 ← phi( mul8s_error::@6/(signed word) mul8s_error::mf#4 ) (signed word) mul8s_error::mn#1 ← phi( mul8s_error::@6/(signed word) mul8s_error::mn#2 ) - (byte*) print_char_cursor#125 ← phi( mul8s_error::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#125 + (byte*) print_char_cursor#127 ← phi( mul8s_error::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#127 (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#1 call print_sword to:mul8s_error::@8 mul8s_error::@8: scope:[mul8s_error] from mul8s_error::@7 (byte*) print_line_cursor#77 ← phi( mul8s_error::@7/(byte*) print_line_cursor#88 ) (signed word) mul8s_error::mf#2 ← phi( mul8s_error::@7/(signed word) mul8s_error::mf#3 ) - (byte*) print_char_cursor#126 ← phi( mul8s_error::@7/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#126 + (byte*) print_char_cursor#128 ← phi( mul8s_error::@7/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#128 (byte*) print_str::str#15 ← (const string) mul8s_error::str4 call print_str to:mul8s_error::@9 mul8s_error::@9: scope:[mul8s_error] from mul8s_error::@8 (byte*) print_line_cursor#65 ← phi( mul8s_error::@8/(byte*) print_line_cursor#77 ) (signed word) mul8s_error::mf#1 ← phi( mul8s_error::@8/(signed word) mul8s_error::mf#2 ) - (byte*) print_char_cursor#127 ← phi( mul8s_error::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#127 + (byte*) print_char_cursor#129 ← phi( mul8s_error::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#129 (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#1 call print_sword to:mul8s_error::@10 mul8s_error::@10: scope:[mul8s_error] from mul8s_error::@9 (byte*) print_line_cursor#55 ← phi( mul8s_error::@9/(byte*) print_line_cursor#65 ) - (byte*) print_char_cursor#128 ← phi( mul8s_error::@9/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#128 + (byte*) print_char_cursor#130 ← phi( mul8s_error::@9/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#130 call print_ln to:mul8s_error::@11 mul8s_error::@11: scope:[mul8s_error] from mul8s_error::@10 - (byte*) print_char_cursor#129 ← phi( mul8s_error::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#131 ← phi( mul8s_error::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#42 ← phi( mul8s_error::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#20 ← (byte*) print_line_cursor#42 - (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#129 + (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#131 to:mul8s_error::@return mul8s_error::@return: scope:[mul8s_error] from mul8s_error::@11 (byte*) print_line_cursor#43 ← phi( mul8s_error::@11/(byte*) print_line_cursor#20 ) - (byte*) print_char_cursor#130 ← phi( mul8s_error::@11/(byte*) print_char_cursor#64 ) - (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#130 + (byte*) print_char_cursor#132 ← phi( mul8s_error::@11/(byte*) print_char_cursor#65 ) + (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#132 (byte*) print_line_cursor#21 ← (byte*) print_line_cursor#43 return to:@return @42: scope:[] from @36 (byte*) print_screen#5 ← phi( @36/(byte*) print_screen#6 ) - (byte*) print_char_cursor#151 ← phi( @36/(byte*) print_char_cursor#162 ) + (byte*) print_char_cursor#154 ← phi( @36/(byte*) print_char_cursor#165 ) (byte*) print_line_cursor#56 ← phi( @36/(byte*) print_line_cursor#66 ) call main to:@43 @43: scope:[] from @42 - (byte*) print_char_cursor#131 ← phi( @42/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#133 ← phi( @42/(byte*) print_char_cursor#27 ) (byte*) print_line_cursor#44 ← phi( @42/(byte*) print_line_cursor#9 ) (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#44 - (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#131 + (byte*) print_char_cursor#67 ← (byte*) print_char_cursor#133 to:@end @end: scope:[] from @43 @@ -2271,6 +2282,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#3 (byte) print_char::ch#4 (byte) print_char::ch#5 +(byte) print_char::ch#6 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -2370,6 +2382,9 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#184 (byte*) print_char_cursor#185 (byte*) print_char_cursor#186 +(byte*) print_char_cursor#187 +(byte*) print_char_cursor#188 +(byte*) print_char_cursor#189 (byte*) print_char_cursor#19 (byte*) print_char_cursor#2 (byte*) print_char_cursor#20 @@ -2653,13 +2668,14 @@ SYMBOL TABLE SSA (byte*) print_str::str#9 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -2670,6 +2686,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#5 (signed word) print_sword::w#6 (signed word) print_sword::w#7 +(signed word) print_sword::w#8 +(signed word) print_sword::w#9 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -2750,7 +2768,7 @@ Adding number conversion cast (unumber) 2 in *((byte*) BGCOL#0) ← (number) 2 Adding number conversion cast (snumber) -$80 in (bool~) mul8s_compare::$13 ← (signed byte) mul8s_compare::a#1 != (number) -$80 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#5 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#6 Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#5 Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0 Inlining cast (byte~) mul8s::$0 ← (byte)(signed byte) mul8s::a#1 @@ -2922,51 +2940,51 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#6 & (byte) $f Inferred type updated to byte in (unumber~) mul8u::$1 ← (byte) mul8u::a#4 & (byte) 1 Inferred type updated to byte in (unumber~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -Inversing boolean not [28] (bool~) print_sword::$1 ← (signed word) print_sword::w#4 >= (signed byte) 0 from [27] (bool~) print_sword::$0 ← (signed word) print_sword::w#4 < (signed byte) 0 -Inversing boolean not [130] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [129] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 -Inversing boolean not [156] (bool~) mul8s::$4 ← (signed byte) mul8s::a#2 >= (signed byte) 0 from [155] (bool~) mul8s::$3 ← (signed byte) mul8s::a#2 < (signed byte) 0 -Inversing boolean not [160] (bool~) mul8s::$6 ← (signed byte) mul8s::b#2 >= (signed byte) 0 from [159] (bool~) mul8s::$5 ← (signed byte) mul8s::b#2 < (signed byte) 0 -Inversing boolean not [196] (bool~) mulf_init::$9 ← (byte~) mulf_init::$7 != (byte) 0 from [195] (bool~) mulf_init::$8 ← (byte~) mulf_init::$7 == (byte) 0 -Inversing boolean not [225] (bool~) mulf_init::$17 ← (byte) mulf_init::x_255#1 != (byte) 0 from [224] (bool~) mulf_init::$16 ← (byte) mulf_init::x_255#1 == (byte) 0 -Inversing boolean not [279] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (signed byte) 0 from [278] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (signed byte) 0 -Inversing boolean not [283] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#2 >= (signed byte) 0 from [282] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#2 < (signed byte) 0 -Inversing boolean not [351] (bool~) muls8u::$1 ← (byte) muls8u::a#1 == (byte) 0 from [350] (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (byte) 0 -Inversing boolean not [374] (bool~) muls8s::$2 ← (signed byte) muls8s::a#2 <= (signed byte) 0 from [373] (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (signed byte) 0 -Inversing boolean not [412] (bool~) mulf_tables_cmp::$3 ← *((byte*) mulf_tables_cmp::kc_sqr#2) == *((byte*) mulf_tables_cmp::asm_sqr#2) from [411] (bool~) mulf_tables_cmp::$2 ← *((byte*) mulf_tables_cmp::kc_sqr#2) != *((byte*) mulf_tables_cmp::asm_sqr#2) -Inversing boolean not [481] (bool~) mul8u_compare::$6 ← (word) mul8u_compare::ms#1 == (word) mul8u_compare::mf#1 from [480] (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1 -Inversing boolean not [485] (bool~) mul8u_compare::$8 ← (word) mul8u_compare::ms#2 == (word) mul8u_compare::mn#1 from [484] (bool~) mul8u_compare::$7 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1 -Inversing boolean not [491] (bool~) mul8u_compare::$10 ← (byte) mul8u_compare::ok#3 != (byte) 0 from [490] (bool~) mul8u_compare::$9 ← (byte) mul8u_compare::ok#3 == (byte) 0 -Inversing boolean not [604] (bool~) mul8s_compare::$6 ← (signed word) mul8s_compare::ms#1 == (signed word) mul8s_compare::mf#1 from [603] (bool~) mul8s_compare::$5 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1 -Inversing boolean not [608] (bool~) mul8s_compare::$8 ← (signed word) mul8s_compare::ms#2 == (signed word) mul8s_compare::mn#1 from [607] (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1 -Inversing boolean not [614] (bool~) mul8s_compare::$10 ← (byte) mul8s_compare::ok#3 != (byte) 0 from [613] (bool~) mul8s_compare::$9 ← (byte) mul8s_compare::ok#3 == (byte) 0 +Inversing boolean not [134] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [133] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 +Inversing boolean not [160] (bool~) mul8s::$4 ← (signed byte) mul8s::a#2 >= (signed byte) 0 from [159] (bool~) mul8s::$3 ← (signed byte) mul8s::a#2 < (signed byte) 0 +Inversing boolean not [164] (bool~) mul8s::$6 ← (signed byte) mul8s::b#2 >= (signed byte) 0 from [163] (bool~) mul8s::$5 ← (signed byte) mul8s::b#2 < (signed byte) 0 +Inversing boolean not [200] (bool~) mulf_init::$9 ← (byte~) mulf_init::$7 != (byte) 0 from [199] (bool~) mulf_init::$8 ← (byte~) mulf_init::$7 == (byte) 0 +Inversing boolean not [229] (bool~) mulf_init::$17 ← (byte) mulf_init::x_255#1 != (byte) 0 from [228] (bool~) mulf_init::$16 ← (byte) mulf_init::x_255#1 == (byte) 0 +Inversing boolean not [283] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (signed byte) 0 from [282] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (signed byte) 0 +Inversing boolean not [287] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#2 >= (signed byte) 0 from [286] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#2 < (signed byte) 0 +Inversing boolean not [355] (bool~) muls8u::$1 ← (byte) muls8u::a#1 == (byte) 0 from [354] (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (byte) 0 +Inversing boolean not [378] (bool~) muls8s::$2 ← (signed byte) muls8s::a#2 <= (signed byte) 0 from [377] (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (signed byte) 0 +Inversing boolean not [416] (bool~) mulf_tables_cmp::$3 ← *((byte*) mulf_tables_cmp::kc_sqr#2) == *((byte*) mulf_tables_cmp::asm_sqr#2) from [415] (bool~) mulf_tables_cmp::$2 ← *((byte*) mulf_tables_cmp::kc_sqr#2) != *((byte*) mulf_tables_cmp::asm_sqr#2) +Inversing boolean not [485] (bool~) mul8u_compare::$6 ← (word) mul8u_compare::ms#1 == (word) mul8u_compare::mf#1 from [484] (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1 +Inversing boolean not [489] (bool~) mul8u_compare::$8 ← (word) mul8u_compare::ms#2 == (word) mul8u_compare::mn#1 from [488] (bool~) mul8u_compare::$7 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1 +Inversing boolean not [495] (bool~) mul8u_compare::$10 ← (byte) mul8u_compare::ok#3 != (byte) 0 from [494] (bool~) mul8u_compare::$9 ← (byte) mul8u_compare::ok#3 == (byte) 0 +Inversing boolean not [608] (bool~) mul8s_compare::$6 ← (signed word) mul8s_compare::ms#1 == (signed word) mul8s_compare::mf#1 from [607] (bool~) mul8s_compare::$5 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1 +Inversing boolean not [612] (bool~) mul8s_compare::$8 ← (signed word) mul8s_compare::ms#2 == (signed word) mul8s_compare::mn#1 from [611] (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1 +Inversing boolean not [618] (bool~) mul8s_compare::$10 ← (byte) mul8s_compare::ok#3 != (byte) 0 from [617] (bool~) mul8s_compare::$9 ← (byte) mul8s_compare::ok#3 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#89 (byte*) print_char_cursor#176 (byte*) print_screen#9 (byte*) print_line_cursor#78 (byte*) print_char_cursor#171 (byte*) print_screen#8 (byte*) print_line_cursor#67 (byte*) print_char_cursor#163 (byte*) print_screen#7 (byte*) print_line_cursor#66 (byte*) print_char_cursor#162 (byte*) print_screen#6 (byte*) print_line_cursor#56 (byte*) print_char_cursor#151 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#89 (byte*) print_char_cursor#179 (byte*) print_screen#9 (byte*) print_line_cursor#78 (byte*) print_char_cursor#174 (byte*) print_screen#8 (byte*) print_line_cursor#67 (byte*) print_char_cursor#166 (byte*) print_screen#7 (byte*) print_line_cursor#66 (byte*) print_char_cursor#165 (byte*) print_screen#6 (byte*) print_line_cursor#56 (byte*) print_char_cursor#154 (byte*) print_screen#5 Alias (byte*) print_str::str#16 = (byte*) print_str::str#17 -Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#68 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#3 (byte*) print_line_cursor#25 (byte*) print_char_cursor#70 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#71 (byte*) print_char_cursor#73 (byte*) print_char_cursor#7 -Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#153 -Alias (signed word) print_sword::w#4 = (signed word) print_sword::w#7 (signed word) print_sword::w#6 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#72 +Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#68 (byte*) print_char_cursor#69 (byte*) print_char_cursor#2 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#3 (byte*) print_line_cursor#25 (byte*) print_char_cursor#71 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#156 (byte*) print_char_cursor#137 +Alias (signed word) print_sword::w#4 = (signed word) print_sword::w#7 (signed word) print_sword::w#5 (signed word) print_sword::w#9 (signed word) print_sword::w#8 +Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#72 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#154 (byte*) print_char_cursor#137 +Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#73 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#74 (byte*) print_char_cursor#75 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#157 (byte*) print_char_cursor#140 Alias (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#4 (signed byte) print_sbyte::b#8 (signed byte) print_sbyte::b#7 -Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#76 = (byte*) print_char_cursor#9 Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#75 = (byte*) print_char_cursor#9 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#77 Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#11 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#12 Alias (byte) print_byte::b#1 = (byte~) print_word::$0 Alias (word) print_word::w#6 = (word) print_word::w#7 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#78 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#80 Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#14 +Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#81 (byte*) print_char_cursor#82 (byte*) print_char_cursor#15 Alias (byte) print_byte::b#5 = (byte) print_byte::b#6 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#81 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#17 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#19 -Alias (byte*) print_line_cursor#26 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#20 (byte*) print_char_cursor#86 (byte*) print_line_cursor#4 (byte*) print_char_cursor#21 +Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#83 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#18 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#87 (byte*) print_char_cursor#20 +Alias (byte*) print_line_cursor#26 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#21 (byte*) print_char_cursor#88 (byte*) print_line_cursor#4 (byte*) print_char_cursor#22 Alias (word) mul8u::mb#0 = (byte) mul8u::b#2 Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7 Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 @@ -3015,12 +3033,12 @@ Alias (byte) mulf8u_prepare::a#1 = (byte~) mulf8s::mulf8s_prepare1_$0#0 Alias (signed word) mulf8s_prepared::return#2 = (signed word) mulf8s_prepared::return#4 Alias (signed word) mulf8s::return#0 = (signed word~) mulf8s::$1 (signed word) mulf8s::return#3 (signed word) mulf8s::return#1 Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#57 (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#87 (byte*) print_char_cursor#155 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#88 +Alias (byte*) print_char_cursor#145 = (byte*) print_char_cursor#23 (byte*) print_char_cursor#89 (byte*) print_char_cursor#158 +Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#90 Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#89 +Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#91 Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#90 (byte*) print_char_cursor#91 (byte*) print_char_cursor#26 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#92 (byte*) print_char_cursor#93 (byte*) print_char_cursor#27 Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#8 (byte*) print_line_cursor#31 (byte*) print_line_cursor#9 Alias (word) muls8u::return#0 = (word) muls8u::m#2 (word) muls8u::return#3 (word) muls8u::return#1 Alias (word) muls8u::m#0 = (word) muls8u::m#4 @@ -3035,23 +3053,23 @@ Alias (signed word) muls8s::return#0 = (signed word) muls8s::m#4 (signed word) m Alias (signed word) muls8s::m#2 = (signed word~) muls8s::$5 Alias (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#3 (byte*) mulf_tables_cmp::asm_sqr#5 (byte*) mulf_tables_cmp::asm_sqr#4 Alias (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#3 (byte*) mulf_tables_cmp::kc_sqr#7 (byte*) mulf_tables_cmp::kc_sqr#6 (byte*) mulf_tables_cmp::kc_sqr#5 (byte*) mulf_tables_cmp::kc_sqr#4 -Alias (byte*) print_char_cursor#143 = (byte*) print_char_cursor#157 (byte*) print_char_cursor#156 (byte*) print_char_cursor#144 +Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#160 (byte*) print_char_cursor#159 (byte*) print_char_cursor#147 Alias (byte*) print_line_cursor#48 = (byte*) print_line_cursor#69 (byte*) print_line_cursor#79 (byte*) print_line_cursor#91 (byte*) print_line_cursor#80 (byte*) print_line_cursor#68 (byte*) print_line_cursor#58 (byte*) print_line_cursor#59 (byte*) print_line_cursor#49 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#92 +Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#94 Alias (word) print_word::w#1 = (word~) mulf_tables_cmp::$5 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#93 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#94 +Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#95 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#96 Alias (word) print_word::w#2 = (word~) mulf_tables_cmp::$8 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#95 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#96 +Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#97 +Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#98 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#32 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#97 +Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#99 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#33 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#98 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#34 Alias (word) muls8u::return#2 = (word) muls8u::return#4 Alias (byte) mul8u_compare::a#12 = (byte) mul8u_compare::a#3 (byte) mul8u_compare::a#2 (byte) mul8u_compare::a#4 (byte) mul8u_compare::a#13 Alias (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#3 (byte) mul8u_compare::b#2 (byte) mul8u_compare::b#4 (byte) mul8u_compare::b#11 -Alias (byte*) print_char_cursor#172 = (byte*) print_char_cursor#179 (byte*) print_char_cursor#181 (byte*) print_char_cursor#177 (byte*) print_char_cursor#173 +Alias (byte*) print_char_cursor#175 = (byte*) print_char_cursor#182 (byte*) print_char_cursor#184 (byte*) print_char_cursor#180 (byte*) print_char_cursor#176 Alias (byte*) print_line_cursor#100 = (byte*) print_line_cursor#96 (byte*) print_line_cursor#92 (byte*) print_line_cursor#81 (byte*) print_line_cursor#82 Alias (word) mul8u_compare::ms#0 = (word~) mul8u_compare::$2 (word) mul8u_compare::ms#4 (word) mul8u_compare::ms#1 (word) mul8u_compare::ms#5 Alias (word) mulf8u::return#2 = (word) mulf8u::return#4 @@ -3063,44 +3081,44 @@ Alias (byte) mul8u_compare::a#10 = (byte) mul8u_compare::a#11 Alias (word) mul8u_compare::ms#2 = (word) mul8u_compare::ms#7 Alias (word) mul8u_compare::mn#1 = (word) mul8u_compare::mn#5 Alias (word) mul8u_compare::mf#4 = (word) mul8u_compare::mf#5 -Alias (byte*) print_char_cursor#165 = (byte*) print_char_cursor#166 +Alias (byte*) print_char_cursor#168 = (byte*) print_char_cursor#169 Alias (byte*) print_line_cursor#70 = (byte*) print_line_cursor#71 Alias (byte) mul8u_compare::b#5 = (byte) mul8u_compare::b#7 (byte) mul8u_compare::b#6 Alias (byte) mul8u_compare::a#5 = (byte) mul8u_compare::a#8 (byte) mul8u_compare::a#9 (byte) mul8u_compare::a#6 -Alias (byte*) print_char_cursor#145 = (byte*) print_char_cursor#167 (byte*) print_char_cursor#158 (byte*) print_char_cursor#159 (byte*) print_char_cursor#146 +Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#170 (byte*) print_char_cursor#161 (byte*) print_char_cursor#162 (byte*) print_char_cursor#149 Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#83 (byte*) print_line_cursor#60 (byte*) print_line_cursor#72 (byte*) print_line_cursor#61 (byte*) print_line_cursor#51 Alias (word) mul8u_compare::ms#3 = (word) mul8u_compare::ms#6 Alias (word) mul8u_compare::mn#2 = (word) mul8u_compare::mn#4 Alias (word) mul8u_compare::mf#2 = (word) mul8u_compare::mf#3 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#99 +Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#35 Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#34 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#35 +Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#36 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#35 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#37 Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#36 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#37 +Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#38 Alias (byte) mul8u_error::a#1 = (byte) mul8u_error::a#2 Alias (byte) mul8u_error::b#1 = (byte) mul8u_error::b#3 (byte) mul8u_error::b#4 (byte) mul8u_error::b#2 Alias (word) mul8u_error::ms#1 = (word) mul8u_error::ms#5 (word) mul8u_error::ms#6 (word) mul8u_error::ms#4 (word) mul8u_error::ms#3 (word) mul8u_error::ms#2 Alias (word) mul8u_error::mn#1 = (word) mul8u_error::mn#7 (word) mul8u_error::mn#8 (word) mul8u_error::mn#6 (word) mul8u_error::mn#5 (word) mul8u_error::mn#4 (word) mul8u_error::mn#3 (word) mul8u_error::mn#2 Alias (word) mul8u_error::mf#1 = (word) mul8u_error::mf#9 (word) mul8u_error::mf#10 (word) mul8u_error::mf#8 (word) mul8u_error::mf#7 (word) mul8u_error::mf#6 (word) mul8u_error::mf#5 (word) mul8u_error::mf#4 (word) mul8u_error::mf#3 (word) mul8u_error::mf#2 Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#112 (byte*) print_line_cursor#114 (byte*) print_line_cursor#109 (byte*) print_line_cursor#105 (byte*) print_line_cursor#97 (byte*) print_line_cursor#93 (byte*) print_line_cursor#84 (byte*) print_line_cursor#73 (byte*) print_line_cursor#62 (byte*) print_line_cursor#52 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#41 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#43 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#44 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#45 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#46 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#47 +Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#40 +Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#41 +Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#42 +Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#43 +Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#44 +Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#45 +Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#46 +Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#47 +Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#48 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#37 (byte*) print_line_cursor#38 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#114 (byte*) print_char_cursor#49 +Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#116 (byte*) print_char_cursor#50 Alias (signed word) muls8s::return#2 = (signed word) muls8s::return#4 Alias (signed byte) mul8s_compare::a#12 = (signed byte) mul8s_compare::a#3 (signed byte) mul8s_compare::a#2 (signed byte) mul8s_compare::a#4 (signed byte) mul8s_compare::a#13 Alias (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#3 (signed byte) mul8s_compare::b#2 (signed byte) mul8s_compare::b#4 (signed byte) mul8s_compare::b#11 -Alias (byte*) print_char_cursor#174 = (byte*) print_char_cursor#180 (byte*) print_char_cursor#182 (byte*) print_char_cursor#178 (byte*) print_char_cursor#175 +Alias (byte*) print_char_cursor#177 = (byte*) print_char_cursor#183 (byte*) print_char_cursor#185 (byte*) print_char_cursor#181 (byte*) print_char_cursor#178 Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#98 (byte*) print_line_cursor#94 (byte*) print_line_cursor#85 (byte*) print_line_cursor#86 Alias (signed word) mul8s_compare::ms#0 = (signed word~) mul8s_compare::$2 (signed word) mul8s_compare::ms#4 (signed word) mul8s_compare::ms#1 (signed word) mul8s_compare::ms#5 Alias (signed word) mulf8s::return#2 = (signed word) mulf8s::return#4 @@ -3112,42 +3130,42 @@ Alias (signed byte) mul8s_compare::a#10 = (signed byte) mul8s_compare::a#11 Alias (signed word) mul8s_compare::ms#2 = (signed word) mul8s_compare::ms#7 Alias (signed word) mul8s_compare::mn#1 = (signed word) mul8s_compare::mn#5 Alias (signed word) mul8s_compare::mf#4 = (signed word) mul8s_compare::mf#5 -Alias (byte*) print_char_cursor#168 = (byte*) print_char_cursor#169 +Alias (byte*) print_char_cursor#171 = (byte*) print_char_cursor#172 Alias (byte*) print_line_cursor#74 = (byte*) print_line_cursor#75 Alias (signed byte) mul8s_compare::b#5 = (signed byte) mul8s_compare::b#7 (signed byte) mul8s_compare::b#6 Alias (signed byte) mul8s_compare::a#5 = (signed byte) mul8s_compare::a#8 (signed byte) mul8s_compare::a#9 (signed byte) mul8s_compare::a#6 -Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#170 (byte*) print_char_cursor#160 (byte*) print_char_cursor#161 (byte*) print_char_cursor#149 +Alias (byte*) print_char_cursor#151 = (byte*) print_char_cursor#173 (byte*) print_char_cursor#163 (byte*) print_char_cursor#164 (byte*) print_char_cursor#152 Alias (byte*) print_line_cursor#53 = (byte*) print_line_cursor#87 (byte*) print_line_cursor#63 (byte*) print_line_cursor#76 (byte*) print_line_cursor#64 (byte*) print_line_cursor#54 Alias (signed word) mul8s_compare::ms#3 = (signed word) mul8s_compare::ms#6 Alias (signed word) mul8s_compare::mn#2 = (signed word) mul8s_compare::mn#4 Alias (signed word) mul8s_compare::mf#2 = (signed word) mul8s_compare::mf#3 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#50 +Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#51 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#39 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#51 +Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#52 Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#40 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#52 +Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#53 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#41 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#53 +Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#54 Alias (signed byte) mul8s_error::a#1 = (signed byte) mul8s_error::a#2 Alias (signed byte) mul8s_error::b#1 = (signed byte) mul8s_error::b#3 (signed byte) mul8s_error::b#4 (signed byte) mul8s_error::b#2 Alias (signed word) mul8s_error::ms#1 = (signed word) mul8s_error::ms#5 (signed word) mul8s_error::ms#6 (signed word) mul8s_error::ms#4 (signed word) mul8s_error::ms#3 (signed word) mul8s_error::ms#2 Alias (signed word) mul8s_error::mn#1 = (signed word) mul8s_error::mn#7 (signed word) mul8s_error::mn#8 (signed word) mul8s_error::mn#6 (signed word) mul8s_error::mn#5 (signed word) mul8s_error::mn#4 (signed word) mul8s_error::mn#3 (signed word) mul8s_error::mn#2 Alias (signed word) mul8s_error::mf#1 = (signed word) mul8s_error::mf#9 (signed word) mul8s_error::mf#10 (signed word) mul8s_error::mf#8 (signed word) mul8s_error::mf#7 (signed word) mul8s_error::mf#6 (signed word) mul8s_error::mf#5 (signed word) mul8s_error::mf#4 (signed word) mul8s_error::mf#3 (signed word) mul8s_error::mf#2 Alias (byte*) print_line_cursor#103 = (byte*) print_line_cursor#113 (byte*) print_line_cursor#115 (byte*) print_line_cursor#111 (byte*) print_line_cursor#107 (byte*) print_line_cursor#99 (byte*) print_line_cursor#95 (byte*) print_line_cursor#88 (byte*) print_line_cursor#77 (byte*) print_line_cursor#65 (byte*) print_line_cursor#55 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#58 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#62 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#55 +Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#56 +Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#57 +Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#58 +Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#59 +Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#60 +Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#61 +Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#62 +Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#64 Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#43 (byte*) print_line_cursor#21 -Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#130 (byte*) print_char_cursor#65 +Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#132 (byte*) print_char_cursor#66 Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#44 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#66 +Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#67 Successful SSA optimization Pass2AliasElimination Alias (byte) mul8u::a#3 = (byte) mul8u::a#5 Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 @@ -3165,17 +3183,17 @@ Alias (word) mul8u_compare::mn#0 = (word) mul8u_compare::mn#1 (word) mul8u_compa Alias (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#8 (byte) mul8u_compare::b#5 Alias (byte) mul8u_compare::a#10 = (byte) mul8u_compare::a#12 (byte) mul8u_compare::a#5 Alias (word) mul8u_compare::mf#0 = (word) mul8u_compare::mf#4 (word) mul8u_compare::mf#2 -Alias (byte*) print_char_cursor#145 = (byte*) print_char_cursor#165 (byte*) print_char_cursor#172 +Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#168 (byte*) print_char_cursor#175 Alias (byte*) print_line_cursor#100 = (byte*) print_line_cursor#70 (byte*) print_line_cursor#50 Alias (signed word) mul8s_compare::ms#0 = (signed word) mul8s_compare::ms#2 (signed word) mul8s_compare::ms#3 Alias (signed word) mul8s_compare::mn#0 = (signed word) mul8s_compare::mn#1 (signed word) mul8s_compare::mn#2 Alias (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#8 (signed byte) mul8s_compare::b#5 Alias (signed byte) mul8s_compare::a#10 = (signed byte) mul8s_compare::a#12 (signed byte) mul8s_compare::a#5 Alias (signed word) mul8s_compare::mf#0 = (signed word) mul8s_compare::mf#4 (signed word) mul8s_compare::mf#2 -Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#168 (byte*) print_char_cursor#174 +Alias (byte*) print_char_cursor#151 = (byte*) print_char_cursor#171 (byte*) print_char_cursor#177 Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#74 (byte*) print_line_cursor#53 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#69 +Self Phi Eliminated (byte*) print_char_cursor#70 Self Phi Eliminated (byte*) print_line_cursor#26 Self Phi Eliminated (byte) muls8u::b#1 Self Phi Eliminated (byte) muls8u::a#2 @@ -3183,25 +3201,26 @@ Self Phi Eliminated (signed byte) muls8s::b#1 Self Phi Eliminated (signed byte) muls8s::a#3 Self Phi Eliminated (signed byte) muls8s::b#2 Self Phi Eliminated (signed byte) muls8s::a#4 -Self Phi Eliminated (byte*) print_char_cursor#143 +Self Phi Eliminated (byte*) print_char_cursor#146 Self Phi Eliminated (byte*) print_line_cursor#48 Self Phi Eliminated (byte) mul8u_compare::a#10 -Self Phi Eliminated (byte*) print_char_cursor#145 +Self Phi Eliminated (byte*) print_char_cursor#148 Self Phi Eliminated (byte*) print_line_cursor#100 Self Phi Eliminated (signed byte) mul8s_compare::a#10 -Self Phi Eliminated (byte*) print_char_cursor#148 +Self Phi Eliminated (byte*) print_char_cursor#151 Self Phi Eliminated (byte*) print_line_cursor#102 Successful SSA optimization Pass2SelfPhiElimination -Identical Phi Values (byte*) print_char_cursor#69 (byte*) print_char_cursor#133 -Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#74 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#75 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#18 +Identical Phi Values (byte*) print_char_cursor#70 (byte*) print_char_cursor#135 +Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#76 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#19 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_screen#1 Identical Phi Values (signed byte) mul8s::a#1 (signed byte) mul8s::a#0 @@ -3213,14 +3232,14 @@ Identical Phi Values (signed byte) mulf8s::mulf8s_prepare1_a#0 (signed byte) mul Identical Phi Values (signed byte) mulf8s::b#1 (signed byte) mulf8s::b#0 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#46 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#26 -Identical Phi Values (byte*) print_char_cursor#142 (byte*) print_line_cursor#26 -Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#31 +Identical Phi Values (byte*) print_char_cursor#145 (byte*) print_line_cursor#26 +Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#32 Identical Phi Values (byte*) print_line_cursor#28 (byte*) print_line_cursor#10 -Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#100 +Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#102 Identical Phi Values (byte*) print_line_cursor#29 (byte*) print_line_cursor#13 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#116 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#118 Identical Phi Values (byte*) print_line_cursor#30 (byte*) print_line_cursor#18 Identical Phi Values (byte) muls8u::a#1 (byte) muls8u::a#0 Identical Phi Values (byte) muls8u::b#2 (byte) muls8u::b#0 @@ -3232,133 +3251,135 @@ Identical Phi Values (signed byte) muls8s::b#1 (signed byte) muls8s::b#3 Identical Phi Values (signed byte) muls8s::a#3 (signed byte) muls8s::a#1 Identical Phi Values (signed byte) muls8s::b#2 (signed byte) muls8s::b#3 Identical Phi Values (signed byte) muls8s::a#4 (signed byte) muls8s::a#1 -Identical Phi Values (byte*) print_char_cursor#164 (byte*) print_char_cursor#142 +Identical Phi Values (byte*) print_char_cursor#167 (byte*) print_char_cursor#145 Identical Phi Values (byte*) print_line_cursor#90 (byte*) print_line_cursor#27 -Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_char_cursor#164 +Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#167 Identical Phi Values (byte*) print_line_cursor#48 (byte*) print_line_cursor#90 -Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#134 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#185 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#188 (byte*) print_char_cursor#24 Identical Phi Values (byte*) print_line_cursor#108 (byte*) print_line_cursor#28 Identical Phi Values (byte) mul8u_compare::a#10 (byte) mul8u_compare::a#7 -Identical Phi Values (byte*) print_char_cursor#145 (byte*) print_char_cursor#183 +Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#186 Identical Phi Values (byte*) print_line_cursor#100 (byte*) print_line_cursor#104 -Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#113 +Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#115 Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#15 -Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#134 Identical Phi Values (byte*) print_line_cursor#14 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#147 (byte*) print_char_cursor#145 +Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_char_cursor#148 Identical Phi Values (byte) mul8u_error::a#1 (byte) mul8u_error::a#0 Identical Phi Values (byte) mul8u_error::b#1 (byte) mul8u_error::b#0 Identical Phi Values (word) mul8u_error::ms#1 (word) mul8u_error::ms#0 Identical Phi Values (word) mul8u_error::mn#1 (word) mul8u_error::mn#0 Identical Phi Values (word) mul8u_error::mf#1 (word) mul8u_error::mf#0 Identical Phi Values (byte*) print_line_cursor#101 (byte*) print_line_cursor#100 -Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#14 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#186 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#189 (byte*) print_char_cursor#25 Identical Phi Values (byte*) print_line_cursor#110 (byte*) print_line_cursor#29 Identical Phi Values (signed byte) mul8s_compare::a#10 (signed byte) mul8s_compare::a#7 -Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#184 +Identical Phi Values (byte*) print_char_cursor#151 (byte*) print_char_cursor#187 Identical Phi Values (byte*) print_line_cursor#102 (byte*) print_line_cursor#106 -Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#129 +Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#131 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#20 -Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#134 Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_char_cursor#148 +Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#153 (byte*) print_char_cursor#151 Identical Phi Values (signed byte) mul8s_error::a#1 (signed byte) mul8s_error::a#0 Identical Phi Values (signed byte) mul8s_error::b#1 (signed byte) mul8s_error::b#0 Identical Phi Values (signed word) mul8s_error::ms#1 (signed word) mul8s_error::ms#0 Identical Phi Values (signed word) mul8s_error::mn#1 (signed word) mul8s_error::mn#0 Identical Phi Values (signed word) mul8s_error::mf#1 (signed word) mul8s_error::mf#0 Identical Phi Values (byte*) print_line_cursor#103 (byte*) print_line_cursor#102 -Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#5 -Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#5 +Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#130 (byte*) print_char_cursor#7 Identical Phi Values (byte*) print_line_cursor#20 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#22 (byte*) print_line_cursor#30 -Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#133 (byte*) print_char_cursor#26 Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#135 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_char_cursor#132 -Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#18 -Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#139 (byte*) print_char_cursor#134 +Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [29] if((signed word) print_sword::w#4>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_sbyte::$0 [48] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -Simple Condition (bool~) print_cls::$1 [113] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) mul8u::$0 [126] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -Simple Condition (bool~) mul8u::$3 [131] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 -Simple Condition (bool~) mul8s::$4 [157] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -Simple Condition (bool~) mul8s::$6 [161] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -Simple Condition (bool~) mulf_init::$9 [197] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -Simple Condition (bool~) mulf_init::$14 [209] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$13) goto mulf_init::@1 -Simple Condition (bool~) mulf_init::$17 [226] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@6 -Simple Condition (bool~) mulf_init::$19 [231] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$18) goto mulf_init::@5 -Simple Condition (bool~) mulf8s_prepared::$3 [280] if(*((signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 -Simple Condition (bool~) mulf8s_prepared::$5 [284] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -Simple Condition (bool~) muls8u::$1 [352] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -Simple Condition (bool~) muls8u::$3 [362] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@4 -Simple Condition (bool~) muls8s::$0 [369] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@1 -Simple Condition (bool~) muls8s::$2 [375] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@3 -Simple Condition (bool~) muls8s::$4 [383] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@8 -Simple Condition (bool~) muls8s::$6 [391] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@10 -Simple Condition (bool~) mulf_tables_cmp::$3 [413] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -Simple Condition (bool~) mulf_tables_cmp::$11 [419] if((byte*) mulf_tables_cmp::kc_sqr#1<(byte*~) mulf_tables_cmp::$10) goto mulf_tables_cmp::@1 -Simple Condition (bool~) mul8u_compare::$6 [482] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -Simple Condition (bool~) mul8u_compare::$8 [486] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@4 -Simple Condition (bool~) mul8u_compare::$10 [492] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -Simple Condition (bool~) mul8u_compare::$12 [498] if((byte) mul8u_compare::b#1!=rangelast(0,$ff)) goto mul8u_compare::@2 -Simple Condition (bool~) mul8u_compare::$13 [517] if((byte) mul8u_compare::a#1!=rangelast(0,$ff)) goto mul8u_compare::@1 -Simple Condition (bool~) mul8s_compare::$6 [605] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -Simple Condition (bool~) mul8s_compare::$8 [609] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@4 -Simple Condition (bool~) mul8s_compare::$10 [615] if((byte) mul8s_compare::ok#3!=(byte) 0) goto mul8s_compare::@5 -Simple Condition (bool~) mul8s_compare::$12 [621] if((signed byte) mul8s_compare::b#1!=(signed byte) -$80) goto mul8s_compare::@2 -Simple Condition (bool~) mul8s_compare::$13 [640] if((signed byte) mul8s_compare::a#1!=(signed byte) -$80) goto mul8s_compare::@1 +Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [28] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_sbyte::$0 [52] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 +Simple Condition (bool~) print_cls::$1 [117] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) mul8u::$0 [130] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 +Simple Condition (bool~) mul8u::$3 [135] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 +Simple Condition (bool~) mul8s::$4 [161] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 +Simple Condition (bool~) mul8s::$6 [165] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 +Simple Condition (bool~) mulf_init::$9 [201] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 +Simple Condition (bool~) mulf_init::$14 [213] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$13) goto mulf_init::@1 +Simple Condition (bool~) mulf_init::$17 [230] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@6 +Simple Condition (bool~) mulf_init::$19 [235] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$18) goto mulf_init::@5 +Simple Condition (bool~) mulf8s_prepared::$3 [284] if(*((signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 +Simple Condition (bool~) mulf8s_prepared::$5 [288] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 +Simple Condition (bool~) muls8u::$1 [356] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 +Simple Condition (bool~) muls8u::$3 [366] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@4 +Simple Condition (bool~) muls8s::$0 [373] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@1 +Simple Condition (bool~) muls8s::$2 [379] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@3 +Simple Condition (bool~) muls8s::$4 [387] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@8 +Simple Condition (bool~) muls8s::$6 [395] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@10 +Simple Condition (bool~) mulf_tables_cmp::$3 [417] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 +Simple Condition (bool~) mulf_tables_cmp::$11 [423] if((byte*) mulf_tables_cmp::kc_sqr#1<(byte*~) mulf_tables_cmp::$10) goto mulf_tables_cmp::@1 +Simple Condition (bool~) mul8u_compare::$6 [486] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 +Simple Condition (bool~) mul8u_compare::$8 [490] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@4 +Simple Condition (bool~) mul8u_compare::$10 [496] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 +Simple Condition (bool~) mul8u_compare::$12 [502] if((byte) mul8u_compare::b#1!=rangelast(0,$ff)) goto mul8u_compare::@2 +Simple Condition (bool~) mul8u_compare::$13 [521] if((byte) mul8u_compare::a#1!=rangelast(0,$ff)) goto mul8u_compare::@1 +Simple Condition (bool~) mul8s_compare::$6 [609] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 +Simple Condition (bool~) mul8s_compare::$8 [613] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@4 +Simple Condition (bool~) mul8s_compare::$10 [619] if((byte) mul8s_compare::ok#3!=(byte) 0) goto mul8s_compare::@5 +Simple Condition (bool~) mul8s_compare::$12 [625] if((signed byte) mul8s_compare::b#1!=(signed byte) -$80) goto mul8s_compare::@2 +Simple Condition (bool~) mul8s_compare::$13 [644] if((signed byte) mul8s_compare::a#1!=(signed byte) -$80) goto mul8s_compare::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [181] (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } -Constant right-side identified [182] (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } -Constant right-side identified [183] (byte[$200]) mulf_sqr2_lo#0 ← { fill( $200, 0) } -Constant right-side identified [184] (byte[$200]) mulf_sqr2_hi#0 ← { fill( $200, 0) } -Constant right-side identified [396] (byte[$200]) mula_sqr1_lo#0 ← { fill( $200, 0) } -Constant right-side identified [397] (byte[$200]) mula_sqr1_hi#0 ← { fill( $200, 0) } -Constant right-side identified [398] (byte[$200]) mula_sqr2_lo#0 ← { fill( $200, 0) } -Constant right-side identified [399] (byte[$200]) mula_sqr2_hi#0 ← { fill( $200, 0) } +Constant right-side identified [185] (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } +Constant right-side identified [186] (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } +Constant right-side identified [187] (byte[$200]) mulf_sqr2_lo#0 ← { fill( $200, 0) } +Constant right-side identified [188] (byte[$200]) mulf_sqr2_hi#0 ← { fill( $200, 0) } +Constant right-side identified [400] (byte[$200]) mula_sqr1_lo#0 ← { fill( $200, 0) } +Constant right-side identified [401] (byte[$200]) mula_sqr1_hi#0 ← { fill( $200, 0) } +Constant right-side identified [402] (byte[$200]) mula_sqr2_lo#0 ← { fill( $200, 0) } +Constant right-side identified [403] (byte[$200]) mula_sqr2_hi#0 ← { fill( $200, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const byte) print_char::ch#1 = '-' -Constant (const byte) print_char::ch#2 = ' ' +Constant (const byte) print_char::ch#1 = ' ' +Constant (const byte) print_char::ch#2 = '-' +Constant (const byte) print_char::ch#3 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const word) mul8u::res#0 = 0 Constant (const byte[$200]) mulf_sqr1_lo#0 = { fill( $200, 0) } @@ -3419,10 +3440,10 @@ Constant (const byte*) mulf_tables_cmp::asm_sqr#0 = mula_sqr1_lo#0 Constant (const byte*) mulf_tables_cmp::kc_sqr#0 = mulf_sqr1_lo#0 Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantStringConsolidation -Resolved ranged next value [496] mul8u_compare::b#1 ← ++ mul8u_compare::b#10 to ++ -Resolved ranged comparison value [498] if(mul8u_compare::b#1!=rangelast(0,$ff)) goto mul8u_compare::@2 to (number) 0 -Resolved ranged next value [515] mul8u_compare::a#1 ← ++ mul8u_compare::a#7 to ++ -Resolved ranged comparison value [517] if(mul8u_compare::a#1!=rangelast(0,$ff)) goto mul8u_compare::@1 to (number) 0 +Resolved ranged next value [500] mul8u_compare::b#1 ← ++ mul8u_compare::b#10 to ++ +Resolved ranged comparison value [502] if(mul8u_compare::b#1!=rangelast(0,$ff)) goto mul8u_compare::@2 to (number) 0 +Resolved ranged next value [519] mul8u_compare::a#1 ← ++ mul8u_compare::a#7 to ++ +Resolved ranged comparison value [521] if(mul8u_compare::a#1!=rangelast(0,$ff)) goto mul8u_compare::@1 to (number) 0 Adding number conversion cast (unumber) 0 in if((byte) mul8u_compare::b#1!=(number) 0) goto mul8u_compare::@2 Adding number conversion cast (unumber) 0 in if((byte) mul8u_compare::a#1!=(number) 0) goto mul8u_compare::@1 Successful SSA optimization PassNAddNumberTypeConversions @@ -3432,26 +3453,26 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Self Phi Eliminated (byte*) print_char_cursor#183 +Self Phi Eliminated (byte*) print_char_cursor#186 Self Phi Eliminated (byte*) print_line_cursor#104 -Self Phi Eliminated (byte*) print_char_cursor#184 +Self Phi Eliminated (byte*) print_char_cursor#187 Self Phi Eliminated (byte*) print_line_cursor#106 Successful SSA optimization Pass2SelfPhiElimination -Identical Phi Values (byte*) print_char_cursor#183 (byte*) print_char_cursor#31 +Identical Phi Values (byte*) print_char_cursor#186 (byte*) print_char_cursor#32 Identical Phi Values (byte*) print_line_cursor#104 (byte*) print_line_cursor#10 -Identical Phi Values (byte*) print_char_cursor#184 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#187 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#106 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination -Constant right-side identified [50] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 -Constant right-side identified [82] (byte*) mulf_init::sqr1_hi#0 ← (const byte[$200]) mulf_sqr1_hi#0 + (byte) 1 -Constant right-side identified [83] (byte*) mulf_init::sqr1_lo#0 ← (const byte[$200]) mulf_sqr1_lo#0 + (byte) 1 -Constant right-side identified [96] (byte*~) mulf_init::$13 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $200 -Constant right-side identified [108] (byte*~) mulf_init::$18 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff -Constant right-side identified [110] (byte*~) mulf_init::$2 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff -Constant right-side identified [111] (byte*~) mulf_init::$3 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $100 -Constant right-side identified [113] (byte*~) mulf_init::$4 ← (const byte[$200]) mulf_sqr2_hi#0 + (word) $1ff -Constant right-side identified [114] (byte*~) mulf_init::$5 ← (const byte[$200]) mulf_sqr1_hi#0 + (word) $100 -Constant right-side identified [195] (byte*~) mulf_tables_cmp::$10 ← (const byte[$200]) mulf_sqr1_lo#0 + (word)(number) $200*(number) 4 +Constant right-side identified [51] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [83] (byte*) mulf_init::sqr1_hi#0 ← (const byte[$200]) mulf_sqr1_hi#0 + (byte) 1 +Constant right-side identified [84] (byte*) mulf_init::sqr1_lo#0 ← (const byte[$200]) mulf_sqr1_lo#0 + (byte) 1 +Constant right-side identified [97] (byte*~) mulf_init::$13 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $200 +Constant right-side identified [109] (byte*~) mulf_init::$18 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff +Constant right-side identified [111] (byte*~) mulf_init::$2 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff +Constant right-side identified [112] (byte*~) mulf_init::$3 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $100 +Constant right-side identified [114] (byte*~) mulf_init::$4 ← (const byte[$200]) mulf_sqr2_hi#0 + (word) $1ff +Constant right-side identified [115] (byte*~) mulf_init::$5 ← (const byte[$200]) mulf_sqr1_hi#0 + (word) $100 +Constant right-side identified [196] (byte*~) mulf_tables_cmp::$10 ← (const byte[$200]) mulf_sqr1_lo#0 + (word)(number) $200*(number) 4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Constant (const byte*) mulf_init::sqr1_hi#0 = mulf_sqr1_hi#0+1 @@ -3464,15 +3485,15 @@ Constant (const byte*) mulf_init::$4 = mulf_sqr2_hi#0+$1ff Constant (const byte*) mulf_init::$5 = mulf_sqr1_hi#0+$100 Constant (const byte*) mulf_tables_cmp::$10 = mulf_sqr1_lo#0+(word)$200*4 Successful SSA optimization Pass2ConstantIdentification -Inlining Noop Cast [71] (byte~) mul8s::$10 ← (byte)(signed byte) mul8s::b#0 keeping mul8s::b#0 -Inlining Noop Cast [75] (signed word) mul8s::return#0 ← (signed word)(word) mul8s::m#4 keeping mul8s::m#4 -Inlining Noop Cast [77] (byte~) mul8s::$14 ← (byte)(signed byte) mul8s::a#0 keeping mul8s::a#0 -Inlining Noop Cast [132] (byte~) mulf8s_prepared::$9 ← (byte)(signed byte) mulf8s_prepared::b#0 keeping mulf8s_prepared::b#0 -Inlining Noop Cast [136] (signed word) mulf8s_prepared::return#0 ← (signed word)(word) mulf8s_prepared::m#4 keeping mulf8s_prepared::m#4 -Inlining Noop Cast [138] (byte~) mulf8s_prepared::$13 ← (byte)*((const signed byte*) mulf8s_prepared::memA#0) keeping *(mulf8s_prepared::memA#0) +Inlining Noop Cast [72] (byte~) mul8s::$10 ← (byte)(signed byte) mul8s::b#0 keeping mul8s::b#0 +Inlining Noop Cast [76] (signed word) mul8s::return#0 ← (signed word)(word) mul8s::m#4 keeping mul8s::m#4 +Inlining Noop Cast [78] (byte~) mul8s::$14 ← (byte)(signed byte) mul8s::a#0 keeping mul8s::a#0 +Inlining Noop Cast [133] (byte~) mulf8s_prepared::$9 ← (byte)(signed byte) mulf8s_prepared::b#0 keeping mulf8s_prepared::b#0 +Inlining Noop Cast [137] (signed word) mulf8s_prepared::return#0 ← (signed word)(word) mulf8s_prepared::m#4 keeping mulf8s_prepared::m#4 +Inlining Noop Cast [139] (byte~) mulf8s_prepared::$13 ← (byte)*((const signed byte*) mulf8s_prepared::memA#0) keeping *(mulf8s_prepared::memA#0) Successful SSA optimization Pass2NopCastInlining -Inlining Noop Cast [146] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 keeping mulf8s_prepared::m#4 -Inlining Noop Cast [266] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 keeping mul8s::m#4 +Inlining Noop Cast [147] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 keeping mulf8s_prepared::m#4 +Inlining Noop Cast [267] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 keeping mul8s::m#4 Successful SSA optimization Pass2NopCastInlining Inlining constant with var siblings (const byte*) print_str::str#1 Inlining constant with var siblings (const byte*) print_str::str#2 @@ -3492,6 +3513,7 @@ Inlining constant with var siblings (const byte*) print_str::str#15 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte) print_char::ch#2 +Inlining constant with var siblings (const byte) print_char::ch#3 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const word) mul8u::res#0 Inlining constant with var siblings (const word) mulf_init::sqr#0 @@ -3578,10 +3600,11 @@ Constant inlined mul8s_error::str3 = (const string) str3 Constant inlined muls8u::m#0 = (byte) 0 Constant inlined mul8s_error::str4 = (const string) str4 Constant inlined print_cls::sc#0 = (byte*) 1024 -Constant inlined print_char::ch#2 = (byte) ' ' +Constant inlined print_char::ch#3 = (byte) ' ' +Constant inlined print_char::ch#2 = (byte) '-' Constant inlined muls8s::j#0 = (signed byte) 0 Constant inlined mulf_tables_cmp::asm_sqr#0 = (const byte[$200]) mula_sqr1_lo#0 -Constant inlined print_char::ch#1 = (byte) '-' +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' Constant inlined mul8u_error::str1 = (const string) str1 Constant inlined mul8u_error::str2 = (const string) str2 @@ -3589,7 +3612,6 @@ Constant inlined mul8u_error::str3 = (const string) str3 Constant inlined mul8u_error::str4 = (const string) str4 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4) Added new block during phi lifting mul8s::@7(between mul8s::@6 and mul8s::@1) @@ -3634,7 +3656,7 @@ Adding NOP phi() at start of mul8s_compare::@15 Adding NOP phi() at start of mul8s_compare::@17 Adding NOP phi() at start of print_ln::@2 Adding NOP phi() at start of mul8s_error::@11 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 Adding NOP phi() at start of print_sbyte::@7 @@ -3662,9 +3684,9 @@ Calls in [] to main:6 Calls in [main] to print_cls:10 mulf_init:12 mulf_init_asm:14 mulf_tables_cmp:16 mul8u_compare:18 mul8s_compare:20 Calls in [mul8s_compare] to muls8s:28 mulf8s:33 mul8s:38 mul8s_error:53 print_str:61 print_ln:64 Calls in [mul8s_error] to print_str:89 print_sbyte:92 print_str:94 print_sbyte:97 print_str:99 print_sword:102 print_str:104 print_sword:107 print_str:109 print_sword:112 print_ln:115 -Calls in [print_sword] to print_char:121 print_word:129 -Calls in [print_word] to print_byte:138 print_byte:142 -Calls in [print_byte] to print_char:150 print_char:155 +Calls in [print_sword] to print_char:121 print_word:127 print_char:131 +Calls in [print_word] to print_byte:142 print_byte:146 +Calls in [print_byte] to print_char:154 print_char:159 Calls in [print_sbyte] to print_char:165 print_byte:171 print_char:175 Calls in [mul8s] to mul8u:182 Calls in [mulf8s] to mulf8u_prepare:221 mulf8s_prepared:224 @@ -3674,51 +3696,50 @@ Calls in [mul8u_error] to print_str:326 print_byte:330 print_str:332 print_byte: Calls in [mulf8u] to mulf8u_prepare:362 mulf8u_prepared:365 Calls in [mulf_tables_cmp] to print_str:384 print_word:388 print_str:390 print_word:394 print_str:402 print_ln:404 -Created 63 initial phi equivalence classes -Not coalescing [60] print_char_cursor#187 ← print_line_cursor#1 +Created 62 initial phi equivalence classes +Not coalescing [60] print_char_cursor#190 ← print_line_cursor#1 Coalesced [62] print_line_cursor#116 ← print_line_cursor#1 -Coalesced [63] print_char_cursor#202 ← print_char_cursor#132 +Coalesced [63] print_char_cursor#205 ← print_char_cursor#134 Coalesced [66] mul8s_compare::a#14 ← mul8s_compare::a#1 Coalesced [67] mul8s_compare::b#12 ← mul8s_compare::b#1 Coalesced [68] mul8s_compare::ok#5 ← mul8s_compare::ok#4 Coalesced [70] print_line_cursor#120 ← print_line_cursor#45 Coalesced (already) [76] print_line_cursor#121 ← print_line_cursor#1 Coalesced [78] print_str::str#19 ← print_str::str#18 -Coalesced [79] print_char_cursor#200 ← print_char_cursor#152 +Coalesced [79] print_char_cursor#203 ← print_char_cursor#155 Coalesced [86] print_str::str#20 ← print_str::str#0 -Coalesced [87] print_char_cursor#201 ← print_char_cursor#1 -Not coalescing [88] print_char_cursor#188 ← print_line_cursor#1 +Coalesced [87] print_char_cursor#204 ← print_char_cursor#1 +Not coalescing [88] print_char_cursor#191 ← print_line_cursor#1 Coalesced [91] print_sbyte::b#9 ← print_sbyte::b#1 -Coalesced [93] print_char_cursor#189 ← print_char_cursor#18 +Coalesced [93] print_char_cursor#192 ← print_char_cursor#19 Coalesced [96] print_sbyte::b#10 ← print_sbyte::b#2 -Coalesced (already) [98] print_char_cursor#190 ← print_char_cursor#18 -Coalesced [101] print_sword::w#8 ← print_sword::w#1 -Coalesced (already) [103] print_char_cursor#191 ← print_char_cursor#18 -Coalesced [106] print_sword::w#9 ← print_sword::w#2 -Coalesced (already) [108] print_char_cursor#192 ← print_char_cursor#18 -Coalesced [111] print_sword::w#10 ← print_sword::w#3 +Coalesced (already) [98] print_char_cursor#193 ← print_char_cursor#19 +Coalesced [101] print_sword::w#10 ← print_sword::w#1 +Coalesced (already) [103] print_char_cursor#194 ← print_char_cursor#19 +Coalesced [106] print_sword::w#11 ← print_sword::w#2 +Coalesced (already) [108] print_char_cursor#195 ← print_char_cursor#19 +Coalesced [111] print_sword::w#12 ← print_sword::w#3 Coalesced (already) [113] print_line_cursor#117 ← print_line_cursor#1 -Coalesced (already) [114] print_char_cursor#203 ← print_char_cursor#18 -Coalesced [120] print_char_cursor#224 ← print_char_cursor#132 -Coalesced [123] print_sword::w#12 ← print_sword::w#0 -Coalesced [124] print_char_cursor#208 ← print_char_cursor#18 -Coalesced [127] print_word::w#13 ← print_word::w#0 -Coalesced [128] print_char_cursor#214 ← print_char_cursor#134 -Coalesced [132] print_sword::w#11 ← print_sword::w#4 -Coalesced (already) [133] print_char_cursor#207 ← print_char_cursor#132 -Coalesced [136] print_byte::b#10 ← print_byte::b#1 -Coalesced [137] print_char_cursor#218 ← print_char_cursor#139 -Coalesced [140] print_byte::b#11 ← print_byte::b#2 -Coalesced (already) [141] print_char_cursor#219 ← print_char_cursor#18 -Coalesced [148] print_char::ch#6 ← print_char::ch#3 -Coalesced (already) [149] print_char_cursor#220 ← print_char_cursor#140 -Coalesced [153] print_char::ch#7 ← print_char::ch#4 -Coalesced (already) [154] print_char_cursor#221 ← print_char_cursor#18 -Coalesced (already) [164] print_char_cursor#223 ← print_char_cursor#132 +Coalesced (already) [114] print_char_cursor#206 ← print_char_cursor#19 +Coalesced [120] print_char_cursor#226 ← print_char_cursor#134 +Coalesced [122] print_sword::w#14 ← print_sword::w#4 +Coalesced [125] print_word::w#13 ← print_word::w#0 +Coalesced [126] print_char_cursor#215 ← print_char_cursor#19 +Coalesced (already) [130] print_char_cursor#225 ← print_char_cursor#134 +Coalesced [133] print_sword::w#13 ← print_sword::w#0 +Coalesced [140] print_byte::b#10 ← print_byte::b#1 +Coalesced [141] print_char_cursor#219 ← print_char_cursor#142 +Coalesced [144] print_byte::b#11 ← print_byte::b#2 +Coalesced (already) [145] print_char_cursor#220 ← print_char_cursor#19 +Coalesced [152] print_char::ch#7 ← print_char::ch#4 +Coalesced (already) [153] print_char_cursor#221 ← print_char_cursor#143 +Coalesced [157] print_char::ch#8 ← print_char::ch#5 +Coalesced (already) [158] print_char_cursor#222 ← print_char_cursor#19 +Coalesced (already) [164] print_char_cursor#224 ← print_char_cursor#134 Coalesced [166] print_sbyte::b#12 ← print_sbyte::b#3 Coalesced [169] print_byte::b#9 ← print_byte::b#0 -Coalesced (already) [170] print_char_cursor#217 ← print_char_cursor#18 -Coalesced (already) [174] print_char_cursor#222 ← print_char_cursor#132 +Coalesced (already) [170] print_char_cursor#218 ← print_char_cursor#19 +Coalesced (already) [174] print_char_cursor#223 ← print_char_cursor#134 Coalesced [177] print_sbyte::b#11 ← print_sbyte::b#0 Coalesced [180] mul8u::mb#6 ← mul8u::b#0 Coalesced [181] mul8u::a#8 ← mul8u::a#1 @@ -3747,42 +3768,42 @@ Coalesced [274] muls8s::m#10 ← muls8s::m#2 Coalesced [275] muls8s::i#3 ← muls8s::i#1 Coalesced [291] mul8u::mb#7 ← mul8u::b#1 Coalesced [292] mul8u::a#9 ← mul8u::a#2 -Coalesced [316] print_char_cursor#193 ← print_char_cursor#31 +Coalesced [316] print_char_cursor#196 ← print_char_cursor#32 Coalesced [318] print_line_cursor#118 ← print_line_cursor#10 -Coalesced (already) [319] print_char_cursor#204 ← print_char_cursor#132 +Coalesced (already) [319] print_char_cursor#207 ← print_char_cursor#134 Coalesced [322] mul8u_compare::a#14 ← mul8u_compare::a#1 Coalesced [323] mul8u_compare::b#12 ← mul8u_compare::b#1 Coalesced [324] mul8u_compare::ok#5 ← mul8u_compare::ok#4 -Coalesced (already) [325] print_char_cursor#194 ← print_char_cursor#31 +Coalesced (already) [325] print_char_cursor#197 ← print_char_cursor#32 Coalesced [328] print_byte::b#7 ← print_byte::b#3 -Coalesced (already) [329] print_char_cursor#215 ← print_char_cursor#132 -Coalesced (already) [331] print_char_cursor#195 ← print_char_cursor#18 +Coalesced (already) [329] print_char_cursor#216 ← print_char_cursor#134 +Coalesced (already) [331] print_char_cursor#198 ← print_char_cursor#19 Coalesced [334] print_byte::b#8 ← print_byte::b#4 -Coalesced (already) [335] print_char_cursor#216 ← print_char_cursor#132 -Coalesced (already) [337] print_char_cursor#196 ← print_char_cursor#18 +Coalesced (already) [335] print_char_cursor#217 ← print_char_cursor#134 +Coalesced (already) [337] print_char_cursor#199 ← print_char_cursor#19 Coalesced [340] print_word::w#8 ← print_word::w#3 -Coalesced (already) [341] print_char_cursor#209 ← print_char_cursor#132 -Coalesced (already) [343] print_char_cursor#197 ← print_char_cursor#18 +Coalesced (already) [341] print_char_cursor#210 ← print_char_cursor#134 +Coalesced (already) [343] print_char_cursor#200 ← print_char_cursor#19 Coalesced [346] print_word::w#9 ← print_word::w#4 -Coalesced (already) [347] print_char_cursor#210 ← print_char_cursor#132 -Coalesced (already) [349] print_char_cursor#198 ← print_char_cursor#18 +Coalesced (already) [347] print_char_cursor#211 ← print_char_cursor#134 +Coalesced (already) [349] print_char_cursor#201 ← print_char_cursor#19 Coalesced [352] print_word::w#10 ← print_word::w#5 -Coalesced (already) [353] print_char_cursor#211 ← print_char_cursor#132 +Coalesced (already) [353] print_char_cursor#212 ← print_char_cursor#134 Coalesced (already) [355] print_line_cursor#119 ← print_line_cursor#10 -Coalesced (already) [356] print_char_cursor#205 ← print_char_cursor#18 +Coalesced (already) [356] print_char_cursor#208 ← print_char_cursor#19 Coalesced [361] mulf8u_prepare::a#4 ← mulf8u_prepare::a#0 Coalesced [364] mulf8u_prepared::b#4 ← mulf8u_prepared::b#0 Coalesced [375] muls8u::return#5 ← muls8u::m#1 Coalesced [378] muls8u::m#5 ← muls8u::m#1 Coalesced [379] muls8u::i#3 ← muls8u::i#1 Coalesced [386] print_word::w#11 ← print_word::w#1 -Coalesced (already) [387] print_char_cursor#212 ← print_char_cursor#132 -Coalesced (already) [389] print_char_cursor#199 ← print_char_cursor#18 +Coalesced (already) [387] print_char_cursor#213 ← print_char_cursor#134 +Coalesced (already) [389] print_char_cursor#202 ← print_char_cursor#19 Coalesced [392] print_word::w#12 ← print_word::w#2 -Coalesced (already) [393] print_char_cursor#213 ← print_char_cursor#132 -Coalesced (already) [395] print_char_cursor#226 ← print_char_cursor#18 -Coalesced (already) [403] print_char_cursor#206 ← print_char_cursor#132 -Not coalescing [405] print_char_cursor#225 ← print_line_cursor#1 +Coalesced (already) [393] print_char_cursor#214 ← print_char_cursor#134 +Coalesced (already) [395] print_char_cursor#228 ← print_char_cursor#19 +Coalesced (already) [403] print_char_cursor#209 ← print_char_cursor#134 +Not coalescing [405] print_char_cursor#227 ← print_line_cursor#1 Coalesced (already) [406] print_line_cursor#122 ← print_line_cursor#1 Coalesced [407] mulf_tables_cmp::kc_sqr#8 ← mulf_tables_cmp::kc_sqr#1 Coalesced [408] mulf_tables_cmp::asm_sqr#6 ← mulf_tables_cmp::asm_sqr#1 @@ -3816,8 +3837,8 @@ Culled Empty Block (label) mul8s_compare::@19 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) mul8s_error::@11 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_sbyte::@6 @@ -3854,7 +3875,7 @@ Culled Empty Block (label) mulf_init::@10 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @42 to @1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block print_sbyte::@5 to print_sbyte::@4 Renumbering block mul8u::@4 to mul8u::@3 Renumbering block mul8u::@7 to mul8u::@4 @@ -3912,7 +3933,8 @@ Adding NOP phi() at start of mul8s_error::@4 Adding NOP phi() at start of mul8s_error::@6 Adding NOP phi() at start of mul8s_error::@8 Adding NOP phi() at start of mul8s_error::@10 -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of print_sbyte::@3 Adding NOP phi() at start of print_sbyte::@1 Adding NOP phi() at start of mulf8s @@ -4037,7 +4059,7 @@ mul8s_compare::@8: scope:[mul8s_compare] from mul8s_compare::@5 [52] if((signed byte) mul8s_compare::a#1!=(signed byte) -$80) goto mul8s_compare::@1 to:mul8s_compare::@9 mul8s_compare::@9: scope:[mul8s_compare] from mul8s_compare::@8 - [53] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 + [53] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 [54] call print_str to:mul8s_compare::@13 mul8s_compare::@13: scope:[mul8s_compare] from mul8s_compare::@9 @@ -4045,23 +4067,23 @@ mul8s_compare::@13: scope:[mul8s_compare] from mul8s_compare::@9 [56] call print_ln to:mul8s_compare::@return print_ln: scope:[print_ln] from mul8s_compare::@13 mul8s_error::@10 mul8u_compare::@13 mul8u_error::@10 mulf_tables_cmp::@8 - [57] (byte*) print_char_cursor#133 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#132 mul8s_error::@10/(byte*) print_char_cursor#18 mul8u_compare::@13/(byte*) print_char_cursor#132 mul8u_error::@10/(byte*) print_char_cursor#18 mulf_tables_cmp::@8/(byte*) print_char_cursor#132 ) + [57] (byte*) print_char_cursor#135 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#134 mul8s_error::@10/(byte*) print_char_cursor#19 mul8u_compare::@13/(byte*) print_char_cursor#134 mul8u_error::@10/(byte*) print_char_cursor#19 mulf_tables_cmp::@8/(byte*) print_char_cursor#134 ) [57] (byte*) print_line_cursor#45 ← phi( mul8s_compare::@13/(byte*) print_line_cursor#1 mul8s_error::@10/(byte*) print_line_cursor#1 mul8u_compare::@13/(byte*) print_line_cursor#10 mul8u_error::@10/(byte*) print_line_cursor#10 mulf_tables_cmp::@8/(byte*) 1024 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [58] (byte*) print_line_cursor#23 ← phi( print_ln/(byte*) print_line_cursor#45 print_ln::@1/(byte*) print_line_cursor#1 ) [59] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 - [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 + [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [61] return to:@return print_str: scope:[print_str] from mul8s_compare::@9 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@9 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@4 mulf_tables_cmp::@6 - [62] (byte*) print_char_cursor#152 ← phi( mul8s_compare::@9/(byte*~) print_char_cursor#187 mul8s_error/(byte*~) print_char_cursor#188 mul8s_error::@2/(byte*) print_char_cursor#18 mul8s_error::@4/(byte*) print_char_cursor#18 mul8s_error::@6/(byte*) print_char_cursor#18 mul8s_error::@8/(byte*) print_char_cursor#18 mul8u_compare::@9/(byte*) print_char_cursor#31 mul8u_error/(byte*) print_char_cursor#31 mul8u_error::@2/(byte*) print_char_cursor#18 mul8u_error::@4/(byte*) print_char_cursor#18 mul8u_error::@6/(byte*) print_char_cursor#18 mul8u_error::@8/(byte*) print_char_cursor#18 mulf_tables_cmp::@3/(byte*) 1024 mulf_tables_cmp::@4/(byte*) 1024 mulf_tables_cmp::@6/(byte*) print_char_cursor#18 ) + [62] (byte*) print_char_cursor#155 ← phi( mul8s_compare::@9/(byte*~) print_char_cursor#190 mul8s_error/(byte*~) print_char_cursor#191 mul8s_error::@2/(byte*) print_char_cursor#19 mul8s_error::@4/(byte*) print_char_cursor#19 mul8s_error::@6/(byte*) print_char_cursor#19 mul8s_error::@8/(byte*) print_char_cursor#19 mul8u_compare::@9/(byte*) print_char_cursor#32 mul8u_error/(byte*) print_char_cursor#32 mul8u_error::@2/(byte*) print_char_cursor#19 mul8u_error::@4/(byte*) print_char_cursor#19 mul8u_error::@6/(byte*) print_char_cursor#19 mul8u_error::@8/(byte*) print_char_cursor#19 mulf_tables_cmp::@3/(byte*) 1024 mulf_tables_cmp::@4/(byte*) 1024 mulf_tables_cmp::@6/(byte*) print_char_cursor#19 ) [62] (byte*) print_str::str#18 ← phi( mul8s_compare::@9/(const string) mul8s_compare::str mul8s_error/(const string) mul8s_error::str mul8s_error::@2/(const string) str1 mul8s_error::@4/(const string) str2 mul8s_error::@6/(const string) str3 mul8s_error::@8/(const string) str4 mul8u_compare::@9/(const string) mul8u_compare::str mul8u_error/(const string) mul8u_error::str mul8u_error::@2/(const string) str1 mul8u_error::@4/(const string) str2 mul8u_error::@6/(const string) str3 mul8u_error::@8/(const string) str4 mulf_tables_cmp::@3/(const string) mulf_tables_cmp::str mulf_tables_cmp::@4/(const string) mulf_tables_cmp::str2 mulf_tables_cmp::@6/(const string) mulf_tables_cmp::str1 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [63] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 ) + [63] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#155 print_str::@2/(byte*) print_char_cursor#1 ) [63] (byte*) print_str::str#16 ← phi( print_str/(byte*) print_str::str#18 print_str::@2/(byte*) print_str::str#0 ) [64] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -4069,12 +4091,12 @@ print_str::@return: scope:[print_str] from print_str::@1 [65] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [66] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) - [67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 + [66] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) + [67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 [68] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 to:print_str::@1 mul8s_error: scope:[mul8s_error] from mul8s_compare::@7 - [69] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 + [69] (byte*~) print_char_cursor#191 ← (byte*) print_line_cursor#1 [70] call print_str to:mul8s_error::@1 mul8s_error::@1: scope:[mul8s_error] from mul8s_error @@ -4122,500 +4144,503 @@ mul8s_error::@return: scope:[mul8s_error] from mul8s_error::@10 to:@return print_sword: scope:[print_sword] from mul8s_error::@5 mul8s_error::@7 mul8s_error::@9 [92] (signed word) print_sword::w#4 ← phi( mul8s_error::@5/(signed word) print_sword::w#1 mul8s_error::@7/(signed word) print_sword::w#2 mul8s_error::@9/(signed word) print_sword::w#3 ) - [93] if((signed word) print_sword::w#4>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [93] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [94] phi() [95] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [97] (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#18 ) - [97] (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#4 print_sword::@3/(signed word) print_sword::w#0 ) - [98] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 - [99] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [96] (signed word) print_sword::w#6 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#4 ) + [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 + [98] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [100] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [99] return to:@return -print_word: scope:[print_word] from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@5 mulf_tables_cmp::@7 print_sword::@1 - [101] (byte*) print_char_cursor#139 ← phi( mul8u_error::@5/(byte*) print_char_cursor#132 mul8u_error::@7/(byte*) print_char_cursor#132 mul8u_error::@9/(byte*) print_char_cursor#132 mulf_tables_cmp::@5/(byte*) print_char_cursor#132 mulf_tables_cmp::@7/(byte*) print_char_cursor#132 print_sword::@1/(byte*) print_char_cursor#134 ) - [101] (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@5/(word) print_word::w#1 mulf_tables_cmp::@7/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 ) - [102] (byte) print_byte::b#1 ← > (word) print_word::w#6 - [103] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [104] (byte) print_byte::b#2 ← < (word) print_word::w#6 - [105] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [106] return - to:@return -print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1 - [107] (byte*) print_char_cursor#140 ← phi( mul8u_error::@1/(byte*) print_char_cursor#132 mul8u_error::@3/(byte*) print_char_cursor#132 print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#18 ) - [107] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) - [108] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 - [109] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [110] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [111] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f - [112] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [113] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [114] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - [115] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#140 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#132 ) - [115] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) - [116] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 - [117] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 +print_sword::@1: scope:[print_sword] from print_sword + [100] phi() + [101] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 + to:print_sword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3 + [103] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#134 print_sbyte::@3/(byte*) print_char_cursor#134 print_sword::@1/(byte*) print_char_cursor#134 print_sword::@3/(byte*) print_char_cursor#134 ) + [103] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [104] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 + [105] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [118] return + [106] return + to:@return +print_word: scope:[print_word] from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@5 mulf_tables_cmp::@7 print_sword::@2 + [107] (byte*) print_char_cursor#142 ← phi( mul8u_error::@5/(byte*) print_char_cursor#134 mul8u_error::@7/(byte*) print_char_cursor#134 mul8u_error::@9/(byte*) print_char_cursor#134 mulf_tables_cmp::@5/(byte*) print_char_cursor#134 mulf_tables_cmp::@7/(byte*) print_char_cursor#134 print_sword::@2/(byte*) print_char_cursor#19 ) + [107] (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@5/(word) print_word::w#1 mulf_tables_cmp::@7/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) + [108] (byte) print_byte::b#1 ← > (word) print_word::w#6 + [109] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [110] (byte) print_byte::b#2 ← < (word) print_word::w#6 + [111] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [112] return + to:@return +print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1 + [113] (byte*) print_char_cursor#143 ← phi( mul8u_error::@1/(byte*) print_char_cursor#134 mul8u_error::@3/(byte*) print_char_cursor#134 print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#19 ) + [113] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) + [114] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 + [115] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [116] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [117] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f + [118] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [119] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [120] return to:@return print_sbyte: scope:[print_sbyte] from mul8s_error::@1 mul8s_error::@3 - [119] (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 ) - [120] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 + [121] (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 ) + [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [121] phi() - [122] call print_char + [123] phi() + [124] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [123] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 ) - [124] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 - [125] call print_byte + [125] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 ) + [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 + [127] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [126] return + [128] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [127] phi() - [128] call print_char + [129] phi() + [130] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [129] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 + [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 to:print_sbyte::@2 mul8s: scope:[mul8s] from mul8s_compare::@11 - [130] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 - [131] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 - [132] call mul8u - [133] (word) mul8u::return#2 ← (word) mul8u::res#2 + [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 + [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 + [134] call mul8u + [135] (word) mul8u::return#2 ← (word) mul8u::res#2 to:mul8s::@5 mul8s::@5: scope:[mul8s] from mul8s - [134] (word) mul8s::m#0 ← (word) mul8u::return#2 - [135] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 + [136] (word) mul8s::m#0 ← (word) mul8u::return#2 + [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 to:mul8s::@3 mul8s::@3: scope:[mul8s] from mul8s::@5 - [136] (byte~) mul8s::$9 ← > (word) mul8s::m#0 - [137] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 - [138] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 + [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 + [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 + [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 to:mul8s::@1 mul8s::@1: scope:[mul8s] from mul8s::@3 mul8s::@5 - [139] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@5/(word) mul8s::m#0 ) - [140] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 + [141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@5/(word) mul8s::m#0 ) + [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 to:mul8s::@4 mul8s::@4: scope:[mul8s] from mul8s::@1 - [141] (byte~) mul8s::$13 ← > (word) mul8s::m#5 - [142] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 - [143] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 + [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 + [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 + [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 to:mul8s::@2 mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 - [144] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) + [146] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) to:mul8s::@return mul8s::@return: scope:[mul8s] from mul8s::@2 - [145] return + [147] return to:@return mul8u: scope:[mul8u] from mul8s mul8u_compare::@11 - [146] (byte) mul8u::a#6 ← phi( mul8s/(byte) mul8u::a#1 mul8u_compare::@11/(byte) mul8u::a#2 ) - [146] (word) mul8u::mb#0 ← phi( mul8s/(byte) mul8u::b#0 mul8u_compare::@11/(byte) mul8u::b#1 ) + [148] (byte) mul8u::a#6 ← phi( mul8s/(byte) mul8u::a#1 mul8u_compare::@11/(byte) mul8u::a#2 ) + [148] (word) mul8u::mb#0 ← phi( mul8s/(byte) mul8u::b#0 mul8u_compare::@11/(byte) mul8u::b#1 ) to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@3 - [147] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) - [147] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) - [147] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) - [148] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 + [149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 ) + [149] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 ) + [149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 ) + [150] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [149] return + [151] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [150] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 - [151] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 + [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 + [153] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 - [152] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@3 mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4 - [153] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) - [154] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 - [155] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 + [155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 ) + [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 + [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 to:mul8u::@1 mulf8s: scope:[mulf8s] from mul8s_compare::@10 - [156] phi() + [158] phi() to:mulf8s::mulf8s_prepare1 mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - [157] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 - [158] call mulf8u_prepare + [159] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 + [160] call mulf8u_prepare to:mulf8s::@1 mulf8s::@1: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - [159] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 - [160] call mulf8s_prepared + [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 + [162] call mulf8s_prepared to:mulf8s::@2 mulf8s::@2: scope:[mulf8s] from mulf8s::@1 - [161] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 + [163] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 to:mulf8s::@return mulf8s::@return: scope:[mulf8s] from mulf8s::@2 - [162] return + [164] return to:@return mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@1 - [163] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 - [164] call mulf8u_prepared - [165] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + [165] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 + [166] call mulf8u_prepared + [167] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 to:mulf8s_prepared::@5 mulf8s_prepared::@5: scope:[mulf8s_prepared] from mulf8s_prepared - [166] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - [167] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 + [168] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + [169] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@5 - [168] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 - [169] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 - [170] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [170] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 + [171] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 + [172] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@5 - [171] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 ) - [172] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 + [173] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 ) + [174] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [173] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 - [174] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [175] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [175] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 + [176] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [177] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [176] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [178] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [177] return + [179] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@1 - [178] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#1 mulf8u::@1/(byte) mulf8u_prepared::b#0 ) - [179] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 + [180] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#1 mulf8u::@1/(byte) mulf8u_prepared::b#0 ) + [181] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [181] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [183] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [182] return + [184] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 mulf8u - [183] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#1 mulf8u/(byte) mulf8u_prepare::a#0 ) - [184] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [185] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#1 mulf8u/(byte) mulf8u_prepare::a#0 ) + [186] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [186] return + [188] return to:@return muls8s: scope:[muls8s] from mul8s_compare::@2 - [187] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 + [189] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 to:muls8s::@2 muls8s::@2: scope:[muls8s] from muls8s - [188] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 + [190] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 to:muls8s::@3 muls8s::@3: scope:[muls8s] from muls8s::@2 muls8s::@3 - [189] (signed byte) muls8s::j#2 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed byte) muls8s::j#1 ) - [189] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 ) - [190] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 - [191] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 - [192] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 + [191] (signed byte) muls8s::j#2 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed byte) muls8s::j#1 ) + [191] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 ) + [192] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 + [193] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 + [194] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 to:muls8s::@1 muls8s::@1: scope:[muls8s] from muls8s::@2 muls8s::@3 muls8s::@4 - [193] (signed word) muls8s::return#0 ← phi( muls8s::@4/(signed word) muls8s::m#2 muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 ) + [195] (signed word) muls8s::return#0 ← phi( muls8s::@4/(signed word) muls8s::m#2 muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 ) to:muls8s::@return muls8s::@return: scope:[muls8s] from muls8s::@1 - [194] return + [196] return to:@return muls8s::@4: scope:[muls8s] from muls8s muls8s::@4 - [195] (signed byte) muls8s::i#2 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed byte) muls8s::i#1 ) - [195] (signed word) muls8s::m#5 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed word) muls8s::m#2 ) - [196] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 - [197] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 - [198] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 + [197] (signed byte) muls8s::i#2 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed byte) muls8s::i#1 ) + [197] (signed word) muls8s::m#5 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed word) muls8s::m#2 ) + [198] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 + [199] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 + [200] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 to:muls8s::@1 mul8u_compare: scope:[mul8u_compare] from main::@4 - [199] phi() + [201] phi() to:mul8u_compare::@1 mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@8 - [200] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) 0 mul8u_compare::@8/(byte) mul8u_compare::a#1 ) + [202] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) 0 mul8u_compare::@8/(byte) mul8u_compare::a#1 ) to:mul8u_compare::@2 mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5 - [201] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) - [202] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - [203] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 - [204] call muls8u - [205] (word) muls8u::return#2 ← (word) muls8u::return#0 + [203] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) + [204] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + [205] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 + [206] call muls8u + [207] (word) muls8u::return#2 ← (word) muls8u::return#0 to:mul8u_compare::@10 mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@2 - [206] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - [207] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 - [208] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 - [209] call mulf8u - [210] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + [208] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + [209] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 + [210] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 + [211] call mulf8u + [212] (word) mulf8u::return#2 ← (word) mulf8u::return#0 to:mul8u_compare::@11 mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10 - [211] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - [212] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 - [213] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 - [214] call mul8u - [215] (word) mul8u::return#3 ← (word) mul8u::res#2 + [213] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + [214] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 + [215] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 + [216] call mul8u + [217] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mul8u_compare::@12 mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@11 - [216] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - [217] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 + [218] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + [219] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 to:mul8u_compare::@6 mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@12 - [218] phi() + [220] phi() to:mul8u_compare::@3 mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@12 mul8u_compare::@6 - [219] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@12/(byte) 1 mul8u_compare::@6/(byte) 0 ) - [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 + [221] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@12/(byte) 1 mul8u_compare::@6/(byte) 0 ) + [222] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 to:mul8u_compare::@4 mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@3 - [221] phi() + [223] phi() to:mul8u_compare::@4 mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@3 - [222] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte) 0 ) - [223] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 + [224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte) 0 ) + [225] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 to:mul8u_compare::@7 mul8u_compare::@7: scope:[mul8u_compare] from mul8u_compare::@4 - [224] *((const byte*) BGCOL#0) ← (byte) 2 - [225] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 - [226] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - [227] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - [228] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - [229] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - [230] call mul8u_error + [226] *((const byte*) BGCOL#0) ← (byte) 2 + [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 + [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + [232] call mul8u_error to:mul8u_compare::@return mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@13 mul8u_compare::@7 - [231] return + [233] return to:@return mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4 - [232] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 - [233] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 + [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 + [235] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 to:mul8u_compare::@8 mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@5 - [234] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 - [235] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 + [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 + [237] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 to:mul8u_compare::@9 mul8u_compare::@9: scope:[mul8u_compare] from mul8u_compare::@8 - [236] phi() - [237] call print_str + [238] phi() + [239] call print_str to:mul8u_compare::@13 mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@9 - [238] phi() - [239] call print_ln + [240] phi() + [241] call print_ln to:mul8u_compare::@return mul8u_error: scope:[mul8u_error] from mul8u_compare::@7 - [240] phi() - [241] call print_str + [242] phi() + [243] call print_str to:mul8u_error::@1 mul8u_error::@1: scope:[mul8u_error] from mul8u_error - [242] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - [243] call print_byte + [244] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + [245] call print_byte to:mul8u_error::@2 mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 - [244] phi() - [245] call print_str + [246] phi() + [247] call print_str to:mul8u_error::@3 mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 - [246] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 - [247] call print_byte + [248] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 + [249] call print_byte to:mul8u_error::@4 mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 - [248] phi() - [249] call print_str + [250] phi() + [251] call print_str to:mul8u_error::@5 mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 - [250] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - [251] call print_word + [252] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + [253] call print_word to:mul8u_error::@6 mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 - [252] phi() - [253] call print_str + [254] phi() + [255] call print_str to:mul8u_error::@7 mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 - [254] (word) print_word::w#4 ← (word) mul8u_error::mn#0 - [255] call print_word + [256] (word) print_word::w#4 ← (word) mul8u_error::mn#0 + [257] call print_word to:mul8u_error::@8 mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 - [256] phi() - [257] call print_str + [258] phi() + [259] call print_str to:mul8u_error::@9 mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8 - [258] (word) print_word::w#5 ← (word) mul8u_error::mf#0 - [259] call print_word + [260] (word) print_word::w#5 ← (word) mul8u_error::mf#0 + [261] call print_word to:mul8u_error::@10 mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9 - [260] phi() - [261] call print_ln + [262] phi() + [263] call print_ln to:mul8u_error::@return mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@10 - [262] return + [264] return to:@return mulf8u: scope:[mulf8u] from mul8u_compare::@10 - [263] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - [264] call mulf8u_prepare + [265] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + [266] call mulf8u_prepare to:mulf8u::@1 mulf8u::@1: scope:[mulf8u] from mulf8u - [265] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - [266] call mulf8u_prepared - [267] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + [267] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + [268] call mulf8u_prepared + [269] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 to:mulf8u::@2 mulf8u::@2: scope:[mulf8u] from mulf8u::@1 - [268] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + [270] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 to:mulf8u::@return mulf8u::@return: scope:[mulf8u] from mulf8u::@2 - [269] return + [271] return to:@return muls8u: scope:[muls8u] from mul8u_compare::@2 - [270] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 + [272] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 to:muls8u::@2 muls8u::@2: scope:[muls8u] from muls8u muls8u::@2 - [271] (byte) muls8u::i#2 ← phi( muls8u/(byte) 0 muls8u::@2/(byte) muls8u::i#1 ) - [271] (word) muls8u::m#3 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 ) - [272] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 - [273] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 - [274] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 + [273] (byte) muls8u::i#2 ← phi( muls8u/(byte) 0 muls8u::@2/(byte) muls8u::i#1 ) + [273] (word) muls8u::m#3 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 ) + [274] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 + [275] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 + [276] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 to:muls8u::@1 muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 - [275] (word) muls8u::return#0 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 ) + [277] (word) muls8u::return#0 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 ) to:muls8u::@return muls8u::@return: scope:[muls8u] from muls8u::@1 - [276] return + [278] return to:@return mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3 - [277] phi() + [279] phi() to:mulf_tables_cmp::@1 mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2 - [278] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) - [278] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) - [279] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 + [280] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) + [280] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) + [281] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 to:mulf_tables_cmp::@3 mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [280] *((const byte*) BGCOL#0) ← (byte) 2 - [281] call print_str + [282] *((const byte*) BGCOL#0) ← (byte) 2 + [283] call print_str to:mulf_tables_cmp::@5 mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3 - [282] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - [283] call print_word + [284] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + [285] call print_word to:mulf_tables_cmp::@6 mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5 - [284] phi() - [285] call print_str + [286] phi() + [287] call print_str to:mulf_tables_cmp::@7 mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6 - [286] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 - [287] call print_word + [288] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 + [289] call print_word to:mulf_tables_cmp::@return mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7 mulf_tables_cmp::@9 - [288] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@9/(byte*) print_line_cursor#1 mulf_tables_cmp::@7/(byte*) 1024 ) - [288] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@9/(byte*~) print_char_cursor#225 mulf_tables_cmp::@7/(byte*) print_char_cursor#18 ) - [289] return + [290] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@9/(byte*) print_line_cursor#1 mulf_tables_cmp::@7/(byte*) 1024 ) + [290] (byte*) print_char_cursor#32 ← phi( mulf_tables_cmp::@9/(byte*~) print_char_cursor#227 mulf_tables_cmp::@7/(byte*) print_char_cursor#19 ) + [291] return to:@return mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [290] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 - [291] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 - [292] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 + [292] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 + [293] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 + [294] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 to:mulf_tables_cmp::@4 mulf_tables_cmp::@4: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2 - [293] phi() - [294] call print_str + [295] phi() + [296] call print_str to:mulf_tables_cmp::@8 mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@4 - [295] phi() - [296] call print_ln + [297] phi() + [298] call print_ln to:mulf_tables_cmp::@9 mulf_tables_cmp::@9: scope:[mulf_tables_cmp] from mulf_tables_cmp::@8 - [297] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 + [299] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 to:mulf_tables_cmp::@return mulf_init_asm: scope:[mulf_init_asm] from main::@2 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } - [299] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) - [300] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) - [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) - [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) + [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) + [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) + [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) + [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) to:mulf_init_asm::@return mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm - [303] return + [305] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [304] phi() + [306] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [305] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [305] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [305] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [305] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [305] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [306] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [307] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 - [308] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 + [307] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [307] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [307] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [307] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [307] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [308] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [309] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 + [310] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@1 - [309] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [310] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [311] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [312] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@3 - [311] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) - [311] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) - [312] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 - [313] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 - [314] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 - [315] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 - [316] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [317] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [318] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [319] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 + [313] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) + [313] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) + [314] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 + [315] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 + [316] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 + [317] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 + [318] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [319] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [320] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [321] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@2 mulf_init::@5 - [320] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) - [320] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) - [320] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) - [320] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) - [321] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [322] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [323] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [324] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [325] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 + [322] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) + [322] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) + [322] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) + [322] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) + [323] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [324] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [325] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [326] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [327] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 to:mulf_init::@5 mulf_init::@7: scope:[mulf_init] from mulf_init::@4 - [326] phi() + [328] phi() to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@4 mulf_init::@7 - [327] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) - [328] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [329] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 + [329] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) + [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 to:mulf_init::@6 mulf_init::@6: scope:[mulf_init] from mulf_init::@5 - [330] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) - [331] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) + [332] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) + [333] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@6 - [332] return + [334] return to:@return print_cls: scope:[print_cls] from main - [333] phi() + [335] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [334] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [335] *((byte*) print_cls::sc#2) ← (byte) ' ' - [336] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [337] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [336] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [337] *((byte*) print_cls::sc#2) ← (byte) ' ' + [338] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [339] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [338] return + [340] return to:@return @@ -4860,23 +4885,22 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#5 3.5 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#3 4.0 (byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 6.0 +(byte) print_char::ch#5 4.0 +(byte) print_char::ch#6 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#132 1.536585365853659 -(byte*) print_char_cursor#133 5.25 -(byte*) print_char_cursor#134 3.0 -(byte*) print_char_cursor#139 7.0 -(byte*) print_char_cursor#140 3.9999999999999996 -(byte*) print_char_cursor#152 28.0 -(byte*) print_char_cursor#18 0.7555555555555553 -(byte*~) print_char_cursor#187 4.0 -(byte*~) print_char_cursor#188 4.0 -(byte*~) print_char_cursor#225 4.0 -(byte*) print_char_cursor#31 0.1951219512195122 -(byte*) print_char_cursor#84 7.0 +(byte*) print_char_cursor#134 1.5000000000000007 +(byte*) print_char_cursor#135 5.25 +(byte*) print_char_cursor#142 7.0 +(byte*) print_char_cursor#143 3.9999999999999996 +(byte*) print_char_cursor#155 28.0 +(byte*) print_char_cursor#19 0.7083333333333331 +(byte*~) print_char_cursor#190 4.0 +(byte*~) print_char_cursor#191 4.0 +(byte*~) print_char_cursor#227 4.0 +(byte*) print_char_cursor#32 0.1951219512195122 +(byte*) print_char_cursor#86 8.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -4907,8 +4931,8 @@ VARIABLE REGISTER WEIGHTS (signed word) print_sword::w#1 4.0 (signed word) print_sword::w#2 4.0 (signed word) print_sword::w#3 4.0 -(signed word) print_sword::w#4 3.0 -(signed word) print_sword::w#5 4.0 +(signed word) print_sword::w#4 1.9999999999999998 +(signed word) print_sword::w#6 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 4.0 @@ -4927,11 +4951,11 @@ Initial phi equivalence classes [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] [ print_str::str#16 print_str::str#18 print_str::str#0 ] -[ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] +[ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] +[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +[ print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#190 print_char_cursor#191 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#32 print_char_cursor#1 print_char_cursor#227 ] [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -[ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#187 print_char_cursor#188 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] [ mul8u::b#0 ] @@ -5020,11 +5044,11 @@ Complete equivalence classes [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] [ print_str::str#16 print_str::str#18 print_str::str#0 ] -[ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] +[ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] +[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +[ print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#190 print_char_cursor#191 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#32 print_char_cursor#1 print_char_cursor#227 ] [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -[ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#187 print_char_cursor#188 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] [ mul8u::b#0 ] @@ -5112,11 +5136,11 @@ Allocated zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] Allocated zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] Allocated zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] Allocated zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] -Allocated zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] -Allocated zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Allocated zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -Allocated zp ZP_BYTE:14 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Allocated zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#187 print_char_cursor#188 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] +Allocated zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] +Allocated zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Allocated zp ZP_WORD:12 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Allocated zp ZP_WORD:14 [ print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#190 print_char_cursor#191 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#32 print_char_cursor#1 print_char_cursor#227 ] +Allocated zp ZP_BYTE:16 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] Allocated zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] Allocated zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] Allocated zp ZP_BYTE:20 [ mul8u::b#0 ] @@ -5209,7 +5233,7 @@ INITIAL ASM .pc = $80d "Program" //SEG2 Global Constants & labels .label BGCOL = $d021 - .label print_char_cursor = $f + .label print_char_cursor = $e .label print_line_cursor = 5 //SEG3 @begin bbegin: @@ -5231,7 +5255,7 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [333] phi from main to print_cls [phi:main->print_cls] + //SEG12 [335] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -5240,7 +5264,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call mulf_init - //SEG16 [304] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [306] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -5256,7 +5280,7 @@ main: { //SEG21 main::@3 b3: //SEG22 [11] call mulf_tables_cmp - //SEG23 [277] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG23 [279] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] mulf_tables_cmp_from_b3: jsr mulf_tables_cmp //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -5265,7 +5289,7 @@ main: { //SEG25 main::@4 b4: //SEG26 [13] call mul8u_compare - //SEG27 [199] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG27 [201] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] mul8u_compare_from_b4: jsr mul8u_compare //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -5344,7 +5368,7 @@ mul8s_compare: { lda b sta mulf8s.b //SEG53 [27] call mulf8s - //SEG54 [156] phi from mul8s_compare::@10 to mulf8s [phi:mul8s_compare::@10->mulf8s] + //SEG54 [158] phi from mul8s_compare::@10 to mulf8s [phi:mul8s_compare::@10->mulf8s] mulf8s_from_b10: jsr mulf8s //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 -- vwsz1=vwsz2 @@ -5486,7 +5510,7 @@ mul8s_compare: { jmp b9 //SEG96 mul8s_compare::@9 b9: - //SEG97 [53] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG97 [53] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -5494,7 +5518,7 @@ mul8s_compare: { //SEG98 [54] call print_str //SEG99 [62] phi from mul8s_compare::@9 to print_str [phi:mul8s_compare::@9->print_str] print_str_from_b9: - //SEG100 [62] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#187 [phi:mul8s_compare::@9->print_str#0] -- register_copy + //SEG100 [62] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#190 [phi:mul8s_compare::@9->print_str#0] -- register_copy //SEG101 [62] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@9->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b13: - //SEG106 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@13->print_ln#0] -- register_copy + //SEG106 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@13->print_ln#0] -- register_copy //SEG107 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@13->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -5533,7 +5557,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG113 [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG113 [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5556,7 +5580,7 @@ print_str: { //SEG117 [63] 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: - //SEG118 [63] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG118 [63] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG119 [63] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 //SEG120 print_str::@1 @@ -5573,12 +5597,12 @@ print_str: { rts //SEG124 print_str::@2 b2: - //SEG125 [66] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 + //SEG125 [66] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG126 [67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG126 [67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -5598,7 +5622,7 @@ mul8s_error: { .label ms = $4f .label mn = $51 .label mf = $53 - //SEG129 [69] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG129 [69] (byte*~) print_char_cursor#191 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -5606,7 +5630,7 @@ mul8s_error: { //SEG130 [70] call print_str //SEG131 [62] phi from mul8s_error to print_str [phi:mul8s_error->print_str] print_str_from_mul8s_error: - //SEG132 [62] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#188 [phi:mul8s_error->print_str#0] -- register_copy + //SEG132 [62] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#191 [phi:mul8s_error->print_str#0] -- register_copy //SEG133 [62] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 lda #print_sbyte] + //SEG137 [121] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] print_sbyte_from_b1: - //SEG138 [119] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy + //SEG138 [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy jsr print_sbyte //SEG139 [73] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] b2_from_b1: @@ -5632,7 +5656,7 @@ mul8s_error: { //SEG141 [74] call print_str //SEG142 [62] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] print_str_from_b2: - //SEG143 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy + //SEG143 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@2->print_str#0] -- register_copy //SEG144 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_sbyte] + //SEG148 [121] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] print_sbyte_from_b3: - //SEG149 [119] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy + //SEG149 [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy jsr print_sbyte //SEG150 [77] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] b4_from_b3: @@ -5658,7 +5682,7 @@ mul8s_error: { //SEG152 [78] call print_str //SEG153 [62] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] print_str_from_b4: - //SEG154 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy + //SEG154 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@4->print_str#0] -- register_copy //SEG155 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b6: - //SEG165 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy + //SEG165 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@6->print_str#0] -- register_copy //SEG166 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b8: - //SEG176 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy + //SEG176 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@8->print_str#0] -- register_copy //SEG177 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b10: - //SEG187 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy + //SEG187 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8s_error::@10->print_ln#0] -- register_copy //SEG188 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -5757,26 +5781,62 @@ mul8s_error: { // print_sword(signed word zeropage(9) w) print_sword: { .label w = 9 - //SEG192 [93] if((signed word) print_sword::w#4>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG192 [93] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG193 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG194 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG193 [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG194 print_sword::@3 + b3: //SEG195 [95] call print_char - //SEG196 [115] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG197 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG198 [115] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG196 [103] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG197 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG198 [103] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG199 [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG200 [96] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#4 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG201 print_sword::@2 + b2: + //SEG202 [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG203 [98] call print_word + //SEG204 [107] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG205 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG206 [107] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG207 print_sword::@return + breturn: + //SEG208 [99] return + rts + //SEG209 [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG210 print_sword::@1 + b1: + //SEG211 [101] call print_char + //SEG212 [103] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG213 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG214 [103] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG199 print_sword::@3 - b3: - //SEG200 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG215 print_sword::@4 + b4: + //SEG216 [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -5784,189 +5844,166 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG201 [97] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG202 [97] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG203 [97] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG204 print_sword::@1 - b1: - //SEG205 [98] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG206 [99] call print_word - //SEG207 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG208 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG209 [101] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word + jmp b2_from_b4 +} +//SEG217 print_char +// Print a single char +// print_char(byte zeropage($b) ch) +print_char: { + .label ch = $b + //SEG218 [104] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuz2 + lda ch + ldy #0 + sta (print_char_cursor),y + //SEG219 [105] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: jmp breturn - //SEG210 print_sword::@return + //SEG220 print_char::@return breturn: - //SEG211 [100] return + //SEG221 [106] return rts } -//SEG212 print_word +//SEG222 print_word // Print a word as HEX -// print_word(word zeropage($b) w) +// print_word(word zeropage($c) w) print_word: { - .label w = $b - //SEG213 [102] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuz1=_hi_vwuz2 + .label w = $c + //SEG223 [108] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG214 [103] call print_byte - //SEG215 [107] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG224 [109] call print_byte + //SEG225 [113] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG216 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy - //SEG217 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG226 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy + //SEG227 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG218 print_word::@1 + //SEG228 print_word::@1 b1: - //SEG219 [104] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuz1=_lo_vwuz2 + //SEG229 [110] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG220 [105] call print_byte - //SEG221 [107] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG230 [111] call print_byte + //SEG231 [113] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG222 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG223 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG232 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG233 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG224 print_word::@return + //SEG234 print_word::@return breturn: - //SEG225 [106] return + //SEG235 [112] return rts } -//SEG226 print_byte +//SEG236 print_byte // Print a byte as HEX -// print_byte(byte zeropage($d) b) +// print_byte(byte zeropage($10) b) print_byte: { .label _0 = $55 .label _2 = $56 - .label b = $d - //SEG227 [108] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + .label b = $10 + //SEG237 [114] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG228 [109] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG238 [115] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG229 [110] call print_char - //SEG230 [115] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG239 [116] call print_char + //SEG240 [103] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG231 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy - //SEG232 [115] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG241 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy + //SEG242 [103] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG233 print_byte::@1 + //SEG243 print_byte::@1 b1: - //SEG234 [111] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG244 [117] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG235 [112] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG245 [118] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG236 [113] call print_char - //SEG237 [115] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG246 [119] call print_char + //SEG247 [103] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG238 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG239 [115] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG248 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG249 [103] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG240 print_byte::@return + //SEG250 print_byte::@return breturn: - //SEG241 [114] return + //SEG251 [120] return rts } -//SEG242 print_char -// Print a single char -// print_char(byte zeropage($e) ch) -print_char: { - .label ch = $e - //SEG243 [116] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 - lda ch - ldy #0 - sta (print_char_cursor),y - //SEG244 [117] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - jmp breturn - //SEG245 print_char::@return - breturn: - //SEG246 [118] return - rts -} -//SEG247 print_sbyte +//SEG252 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage($11) b) print_sbyte: { .label b = $11 - //SEG248 [120] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG253 [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG249 [121] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG254 [123] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG250 print_sbyte::@3 + //SEG255 print_sbyte::@3 b3: - //SEG251 [122] call print_char - //SEG252 [115] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG256 [124] call print_char + //SEG257 [103] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG253 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG254 [115] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG258 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG259 [103] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG255 [123] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG260 [125] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG256 [123] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG261 [125] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG257 print_sbyte::@2 + //SEG262 print_sbyte::@2 b2: - //SEG258 [124] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 -- vbuz1=vbuz2 + //SEG263 [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG259 [125] call print_byte - //SEG260 [107] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG264 [127] call print_byte + //SEG265 [113] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG261 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG262 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG266 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG267 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG263 print_sbyte::@return + //SEG268 print_sbyte::@return breturn: - //SEG264 [126] return + //SEG269 [128] return rts - //SEG265 [127] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG270 [129] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG266 print_sbyte::@1 + //SEG271 print_sbyte::@1 b1: - //SEG267 [128] call print_char - //SEG268 [115] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG272 [130] call print_char + //SEG273 [103] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG269 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG270 [115] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG274 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG275 [103] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG271 print_sbyte::@4 + //SEG276 print_sbyte::@4 b4: - //SEG272 [129] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsz1=_neg_vbsz1 + //SEG277 [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -5974,7 +6011,7 @@ print_sbyte: { sta b jmp b2_from_b4 } -//SEG273 mul8s +//SEG278 mul8s // Multiply of two signed bytes to a signed word // Fixes offsets introduced by using unsigned multiplication // mul8s(signed byte zeropage($49) a, signed byte zeropage($4a) b) @@ -5986,92 +6023,92 @@ mul8s: { .label m = $12 .label a = $49 .label b = $4a - //SEG274 [130] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2 + //SEG279 [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2 lda a sta mul8u.a - //SEG275 [131] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2 + //SEG280 [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2 lda b sta mul8u.b - //SEG276 [132] call mul8u - //SEG277 [146] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG281 [134] call mul8u + //SEG282 [148] phi from mul8s to mul8u [phi:mul8s->mul8u] mul8u_from_mul8s: - //SEG278 [146] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy - //SEG279 [146] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- vwuz1=vbuz2 + //SEG283 [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy + //SEG284 [148] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG280 [133] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG285 [135] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return lda mul8u.res+1 sta mul8u.return+1 jmp b5 - //SEG281 mul8s::@5 + //SEG286 mul8s::@5 b5: - //SEG282 [134] (word) mul8s::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 + //SEG287 [136] (word) mul8s::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 lda mul8u.return sta m lda mul8u.return+1 sta m+1 - //SEG283 [135] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 + //SEG288 [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1_from_b5 jmp b3 - //SEG284 mul8s::@3 + //SEG289 mul8s::@3 b3: - //SEG285 [136] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 + //SEG290 [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _9 - //SEG286 [137] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG291 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 lda _9 sec sbc b sta _16 - //SEG287 [138] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG292 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG288 [139] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1] + //SEG293 [141] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1] b1_from_b3: b1_from_b5: - //SEG289 [139] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy + //SEG294 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy jmp b1 - //SEG290 mul8s::@1 + //SEG295 mul8s::@1 b1: - //SEG291 [140] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsz1_ge_0_then_la1 + //SEG296 [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG292 mul8s::@4 + //SEG297 mul8s::@4 b4: - //SEG293 [141] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 + //SEG298 [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _13 - //SEG294 [142] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG299 [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 lda _13 sec sbc a sta _17 - //SEG295 [143] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG300 [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 lda _17 sta m+1 - //SEG296 [144] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG301 [146] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] b2_from_b1: b2_from_b4: - //SEG297 [144] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG302 [146] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy jmp b2 - //SEG298 mul8s::@2 + //SEG303 mul8s::@2 b2: jmp breturn - //SEG299 mul8s::@return + //SEG304 mul8s::@return breturn: - //SEG300 [145] return + //SEG305 [147] return rts } -//SEG301 mul8u +//SEG306 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte zeropage($16) a, byte zeropage($14) b) mul8u: { @@ -6083,41 +6120,41 @@ mul8u: { .label return = $57 .label b_1 = $15 .label return_3 = $75 - //SEG302 [147] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG307 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG303 [147] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG304 [147] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG308 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG309 [149] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG305 [147] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG310 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG306 mul8u::@1 + //SEG311 mul8u::@1 b1: - //SEG307 [148] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG312 [150] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG308 mul8u::@return + //SEG313 mul8u::@return breturn: - //SEG309 [149] return + //SEG314 [151] return rts - //SEG310 mul8u::@2 + //SEG315 mul8u::@2 b2: - //SEG311 [150] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG316 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG312 [151] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 + //SEG317 [153] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG313 mul8u::@4 + //SEG318 mul8u::@4 b4: - //SEG314 [152] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG319 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -6125,26 +6162,26 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG315 [153] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG320 [155] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG316 [153] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG321 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG317 mul8u::@3 + //SEG322 mul8u::@3 b3: - //SEG318 [154] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + //SEG323 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG319 [155] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG324 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG320 [147] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG325 [149] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG321 [147] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG322 [147] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG323 [147] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG326 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG327 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG328 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG324 mulf8s +//SEG329 mulf8s // Fast multiply two signed bytes to a word result // mulf8s(signed byte zeropage($43) a, signed byte zeropage($44) b) mulf8s: { @@ -6153,39 +6190,39 @@ mulf8s: { .label b = $44 .label return_2 = $45 jmp mulf8s_prepare1 - //SEG325 mulf8s::mulf8s_prepare1 + //SEG330 mulf8s::mulf8s_prepare1 mulf8s_prepare1: - //SEG326 [157] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 + //SEG331 [159] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 lda a sta mulf8u_prepare.a - //SEG327 [158] call mulf8u_prepare - //SEG328 [183] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG332 [160] call mulf8u_prepare + //SEG333 [185] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG329 [183] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG334 [185] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b1 - //SEG330 mulf8s::@1 + //SEG335 mulf8s::@1 b1: - //SEG331 [159] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 + //SEG336 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 lda b sta mulf8s_prepared.b - //SEG332 [160] call mulf8s_prepared + //SEG337 [162] call mulf8s_prepared jsr mulf8s_prepared jmp b2 - //SEG333 mulf8s::@2 + //SEG338 mulf8s::@2 b2: - //SEG334 [161] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 + //SEG339 [163] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 lda mulf8s_prepared.m sta return lda mulf8s_prepared.m+1 sta return+1 jmp breturn - //SEG335 mulf8s::@return + //SEG340 mulf8s::@return breturn: - //SEG336 [162] return + //SEG341 [164] return rts } -//SEG337 mulf8s_prepared +//SEG342 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) // mulf8s_prepared(signed byte zeropage($5e) b) @@ -6197,84 +6234,84 @@ mulf8s_prepared: { .label _16 = $66 .label m = $1b .label b = $5e - //SEG338 [163] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 + //SEG343 [165] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 lda b sta mulf8u_prepared.b - //SEG339 [164] call mulf8u_prepared - //SEG340 [178] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG344 [166] call mulf8u_prepared + //SEG345 [180] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: - //SEG341 [178] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG346 [180] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG342 [165] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG347 [167] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 lda mulf8u_prepared.return sta mulf8u_prepared.return_3 lda mulf8u_prepared.return+1 sta mulf8u_prepared.return_3+1 jmp b5 - //SEG343 mulf8s_prepared::@5 + //SEG348 mulf8s_prepared::@5 b5: - //SEG344 [166] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 + //SEG349 [168] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 lda mulf8u_prepared.return_3 sta m lda mulf8u_prepared.return_3+1 sta m+1 - //SEG345 [167] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG350 [169] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1_from_b5 jmp b3 - //SEG346 mulf8s_prepared::@3 + //SEG351 mulf8s_prepared::@3 b3: - //SEG347 [168] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + //SEG352 [170] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _8 - //SEG348 [169] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG353 [171] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 lda _8 sec sbc b sta _15 - //SEG349 [170] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG354 [172] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 lda _15 sta m+1 - //SEG350 [171] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] + //SEG355 [173] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] b1_from_b3: b1_from_b5: - //SEG351 [171] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy + //SEG356 [173] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG352 mulf8s_prepared::@1 + //SEG357 mulf8s_prepared::@1 b1: - //SEG353 [172] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG358 [174] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG354 mulf8s_prepared::@4 + //SEG359 mulf8s_prepared::@4 b4: - //SEG355 [173] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + //SEG360 [175] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _12 - //SEG356 [174] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 + //SEG361 [176] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 lda _12 sec sbc memA sta _16 - //SEG357 [175] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG362 [177] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG358 [176] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG363 [178] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG359 [176] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG364 [178] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG360 mulf8s_prepared::@2 + //SEG365 mulf8s_prepared::@2 b2: jmp breturn - //SEG361 mulf8s_prepared::@return + //SEG366 mulf8s_prepared::@return breturn: - //SEG362 [177] return + //SEG367 [179] return rts } -//SEG363 mulf8u_prepared +//SEG368 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) // mulf8u_prepared(byte zeropage($1d) b) @@ -6285,10 +6322,10 @@ mulf8u_prepared: { .label b = $1d .label return_2 = $81 .label return_3 = $61 - //SEG364 [179] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 + //SEG369 [181] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 lda b sta memB - //SEG365 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG370 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -6301,27 +6338,27 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG366 [181] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG371 [183] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG367 mulf8u_prepared::@return + //SEG372 mulf8u_prepared::@return breturn: - //SEG368 [182] return + //SEG373 [184] return rts } -//SEG369 mulf8u_prepare +//SEG374 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte zeropage($1e) a) mulf8u_prepare: { .label memA = $fd .label a = $1e - //SEG370 [184] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 + //SEG375 [186] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG371 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG376 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -6329,12 +6366,12 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG372 mulf8u_prepare::@return + //SEG377 mulf8u_prepare::@return breturn: - //SEG373 [186] return + //SEG378 [188] return rts } -//SEG374 muls8s +//SEG379 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction // muls8s(signed byte zeropage($3d) a, signed byte zeropage($3e) b) @@ -6346,35 +6383,35 @@ muls8s: { .label a = $3d .label b = $3e .label return_2 = $3f - //SEG375 [187] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 -- vbsz1_lt_0_then_la1 + //SEG380 [189] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 -- vbsz1_lt_0_then_la1 lda a bmi b4_from_muls8s jmp b2 - //SEG376 muls8s::@2 + //SEG381 muls8s::@2 b2: - //SEG377 [188] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 + //SEG382 [190] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b1_from_b2 - //SEG378 [189] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3] + //SEG383 [191] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3] b3_from_b2: - //SEG379 [189] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#0] -- vbsz1=vbsc1 + //SEG384 [191] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#0] -- vbsz1=vbsc1 lda #0 sta j - //SEG380 [189] phi (signed word) muls8s::m#3 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vwsz1=vbsc1 + //SEG385 [191] phi (signed word) muls8s::m#3 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vwsz1=vbsc1 lda #0 sta m lda #0 sta m+1 jmp b3 - //SEG381 [189] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG386 [191] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] b3_from_b3: - //SEG382 [189] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG383 [189] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG387 [191] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG388 [191] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy jmp b3 - //SEG384 muls8s::@3 + //SEG389 muls8s::@3 b3: - //SEG385 [190] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 + //SEG390 [192] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 lda b sta $fe ora #$7f @@ -6389,51 +6426,51 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG386 [191] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 + //SEG391 [193] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 inc j - //SEG387 [192] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsz1_neq_vbsz2_then_la1 + //SEG392 [194] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsz1_neq_vbsz2_then_la1 lda j cmp a bne b3_from_b3 - //SEG388 [193] phi from muls8s::@3 muls8s::@4 to muls8s::@1 [phi:muls8s::@3/muls8s::@4->muls8s::@1] + //SEG393 [195] phi from muls8s::@3 muls8s::@4 to muls8s::@1 [phi:muls8s::@3/muls8s::@4->muls8s::@1] b1_from_b3: b1_from_b4: - //SEG389 [193] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@4->muls8s::@1#0] -- register_copy + //SEG394 [195] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@4->muls8s::@1#0] -- register_copy jmp b1 - //SEG390 [193] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1] + //SEG395 [195] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1] b1_from_b2: - //SEG391 [193] phi (signed word) muls8s::return#0 = (signed byte) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vbsc1 + //SEG396 [195] phi (signed word) muls8s::return#0 = (signed byte) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vbsc1 lda #0 sta return lda #0 sta return+1 jmp b1 - //SEG392 muls8s::@1 + //SEG397 muls8s::@1 b1: jmp breturn - //SEG393 muls8s::@return + //SEG398 muls8s::@return breturn: - //SEG394 [194] return + //SEG399 [196] return rts - //SEG395 [195] phi from muls8s to muls8s::@4 [phi:muls8s->muls8s::@4] + //SEG400 [197] phi from muls8s to muls8s::@4 [phi:muls8s->muls8s::@4] b4_from_muls8s: - //SEG396 [195] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@4#0] -- vbsz1=vbsc1 + //SEG401 [197] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@4#0] -- vbsz1=vbsc1 lda #0 sta i - //SEG397 [195] phi (signed word) muls8s::m#5 = (signed byte) 0 [phi:muls8s->muls8s::@4#1] -- vwsz1=vbsc1 + //SEG402 [197] phi (signed word) muls8s::m#5 = (signed byte) 0 [phi:muls8s->muls8s::@4#1] -- vwsz1=vbsc1 lda #0 sta m lda #0 sta m+1 jmp b4 - //SEG398 [195] phi from muls8s::@4 to muls8s::@4 [phi:muls8s::@4->muls8s::@4] + //SEG403 [197] phi from muls8s::@4 to muls8s::@4 [phi:muls8s::@4->muls8s::@4] b4_from_b4: - //SEG399 [195] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@4->muls8s::@4#0] -- register_copy - //SEG400 [195] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@4->muls8s::@4#1] -- register_copy + //SEG404 [197] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@4->muls8s::@4#0] -- register_copy + //SEG405 [197] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@4->muls8s::@4#1] -- register_copy jmp b4 - //SEG401 muls8s::@4 + //SEG406 muls8s::@4 b4: - //SEG402 [196] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 + //SEG407 [198] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 lda b sta $fe ora #$7f @@ -6448,15 +6485,15 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG403 [197] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 + //SEG408 [199] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 dec i - //SEG404 [198] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsz1_neq_vbsz2_then_la1 + //SEG409 [200] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsz1_neq_vbsz2_then_la1 lda i cmp a bne b4_from_b4 jmp b1_from_b4 } -//SEG405 mul8u_compare +//SEG410 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { .label ms = $6d @@ -6465,102 +6502,102 @@ mul8u_compare: { .label b = $24 .label a = $23 .label ok = $25 - //SEG406 [200] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG411 [202] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] b1_from_mul8u_compare: - //SEG407 [200] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG412 [202] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a jmp b1 - //SEG408 [200] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1] + //SEG413 [202] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1] b1_from_b8: - //SEG409 [200] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy + //SEG414 [202] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy jmp b1 - //SEG410 mul8u_compare::@1 + //SEG415 mul8u_compare::@1 b1: - //SEG411 [201] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG416 [203] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] b2_from_b1: - //SEG412 [201] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG417 [203] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b jmp b2 - //SEG413 [201] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG418 [203] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] b2_from_b5: - //SEG414 [201] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG419 [203] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy jmp b2 - //SEG415 mul8u_compare::@2 + //SEG420 mul8u_compare::@2 b2: - //SEG416 [202] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG421 [204] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta muls8u.a - //SEG417 [203] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG422 [205] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta muls8u.b - //SEG418 [204] call muls8u + //SEG423 [206] call muls8u jsr muls8u - //SEG419 [205] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 + //SEG424 [207] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 lda muls8u.return sta muls8u.return_2 lda muls8u.return+1 sta muls8u.return_2+1 jmp b10 - //SEG420 mul8u_compare::@10 + //SEG425 mul8u_compare::@10 b10: - //SEG421 [206] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 + //SEG426 [208] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 lda muls8u.return_2 sta ms lda muls8u.return_2+1 sta ms+1 - //SEG422 [207] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG427 [209] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mulf8u.a - //SEG423 [208] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG428 [210] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mulf8u.b - //SEG424 [209] call mulf8u + //SEG429 [211] call mulf8u jsr mulf8u - //SEG425 [210] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 + //SEG430 [212] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 lda mulf8u.return sta mulf8u.return_2 lda mulf8u.return+1 sta mulf8u.return_2+1 jmp b11 - //SEG426 mul8u_compare::@11 + //SEG431 mul8u_compare::@11 b11: - //SEG427 [211] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 + //SEG432 [213] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 lda mulf8u.return_2 sta mf lda mulf8u.return_2+1 sta mf+1 - //SEG428 [212] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG433 [214] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mul8u.a - //SEG429 [213] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG434 [215] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mul8u.b_1 - //SEG430 [214] call mul8u - //SEG431 [146] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u] + //SEG435 [216] call mul8u + //SEG436 [148] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u] mul8u_from_b11: - //SEG432 [146] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy - //SEG433 [146] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- vwuz1=vbuz2 + //SEG437 [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy + //SEG438 [148] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- vwuz1=vbuz2 lda mul8u.b_1 sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG434 [215] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG439 [217] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return_3 lda mul8u.res+1 sta mul8u.return_3+1 jmp b12 - //SEG435 mul8u_compare::@12 + //SEG440 mul8u_compare::@12 b12: - //SEG436 [216] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG441 [218] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta mn lda mul8u.return_3+1 sta mn+1 - //SEG437 [217] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG442 [219] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -6568,26 +6605,26 @@ mul8u_compare: { cmp mf+1 beq b3_from_b12 !: - //SEG438 [218] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6] + //SEG443 [220] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6] b6_from_b12: jmp b6 - //SEG439 mul8u_compare::@6 + //SEG444 mul8u_compare::@6 b6: - //SEG440 [219] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG445 [221] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] b3_from_b6: - //SEG441 [219] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuz1=vbuc1 + //SEG446 [221] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - //SEG442 [219] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3] + //SEG447 [221] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3] b3_from_b12: - //SEG443 [219] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuz1=vbuc1 + //SEG448 [221] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 - //SEG444 mul8u_compare::@3 + //SEG449 mul8u_compare::@3 b3: - //SEG445 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 + //SEG450 [222] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -6595,110 +6632,110 @@ mul8u_compare: { cmp mn+1 beq b14_from_b3 !: - //SEG446 [222] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG451 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] b4_from_b3: - //SEG447 [222] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuz1=vbuc1 + //SEG452 [224] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - //SEG448 [221] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14] + //SEG453 [223] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14] b14_from_b3: jmp b14 - //SEG449 mul8u_compare::@14 + //SEG454 mul8u_compare::@14 b14: - //SEG450 [222] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4] + //SEG455 [224] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4] b4_from_b14: - //SEG451 [222] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy + //SEG456 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy jmp b4 - //SEG452 mul8u_compare::@4 + //SEG457 mul8u_compare::@4 b4: - //SEG453 [223] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuz1_neq_0_then_la1 + //SEG458 [225] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b7 - //SEG454 mul8u_compare::@7 + //SEG459 mul8u_compare::@7 b7: - //SEG455 [224] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG460 [226] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG456 [225] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG461 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mul8u_error.a - //SEG457 [226] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG462 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mul8u_error.b - //SEG458 [227] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 + //SEG463 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 lda ms sta mul8u_error.ms lda ms+1 sta mul8u_error.ms+1 - //SEG459 [228] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 + //SEG464 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 lda mn sta mul8u_error.mn lda mn+1 sta mul8u_error.mn+1 - //SEG460 [229] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 + //SEG465 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 lda mf sta mul8u_error.mf lda mf+1 sta mul8u_error.mf+1 - //SEG461 [230] call mul8u_error - //SEG462 [240] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error] + //SEG466 [232] call mul8u_error + //SEG467 [242] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error] mul8u_error_from_b7: jsr mul8u_error jmp breturn - //SEG463 mul8u_compare::@return + //SEG468 mul8u_compare::@return breturn: - //SEG464 [231] return + //SEG469 [233] return rts - //SEG465 mul8u_compare::@5 + //SEG470 mul8u_compare::@5 b5: - //SEG466 [232] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG471 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG467 [233] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG472 [235] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2_from_b5 jmp b8 - //SEG468 mul8u_compare::@8 + //SEG473 mul8u_compare::@8 b8: - //SEG469 [234] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG474 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG470 [235] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG475 [237] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1_from_b8 - //SEG471 [236] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9] + //SEG476 [238] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9] b9_from_b8: jmp b9 - //SEG472 mul8u_compare::@9 + //SEG477 mul8u_compare::@9 b9: - //SEG473 [237] call print_str - //SEG474 [62] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str] + //SEG478 [239] call print_str + //SEG479 [62] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str] print_str_from_b9: - //SEG475 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@9->print_str#0] -- register_copy - //SEG476 [62] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 + //SEG480 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#32 [phi:mul8u_compare::@9->print_str#0] -- register_copy + //SEG481 [62] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG477 [238] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13] + //SEG482 [240] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13] b13_from_b9: jmp b13 - //SEG478 mul8u_compare::@13 + //SEG483 mul8u_compare::@13 b13: - //SEG479 [239] call print_ln - //SEG480 [57] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln] + //SEG484 [241] call print_ln + //SEG485 [57] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln] print_ln_from_b13: - //SEG481 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@13->print_ln#0] -- register_copy - //SEG482 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@13->print_ln#1] -- register_copy + //SEG486 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy + //SEG487 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@13->print_ln#1] -- register_copy jsr print_ln jmp breturn str: .text "multiply results match!@" } -//SEG483 mul8u_error +//SEG488 mul8u_error // mul8u_error(byte zeropage($79) a, byte zeropage($7a) b, word zeropage($7b) ms, word zeropage($7d) mn, word zeropage($7f) mf) mul8u_error: { .label a = $79 @@ -6706,161 +6743,161 @@ mul8u_error: { .label ms = $7b .label mn = $7d .label mf = $7f - //SEG484 [241] call print_str - //SEG485 [62] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG489 [243] call print_str + //SEG490 [62] phi from mul8u_error to print_str [phi:mul8u_error->print_str] print_str_from_mul8u_error: - //SEG486 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG487 [62] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG491 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#32 [phi:mul8u_error->print_str#0] -- register_copy + //SEG492 [62] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG488 mul8u_error::@1 + //SEG493 mul8u_error::@1 b1: - //SEG489 [242] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 + //SEG494 [244] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 lda a sta print_byte.b - //SEG490 [243] call print_byte - //SEG491 [107] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG495 [245] call print_byte + //SEG496 [113] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] print_byte_from_b1: - //SEG492 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG493 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG497 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG498 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG494 [244] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG499 [246] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] b2_from_b1: jmp b2 - //SEG495 mul8u_error::@2 + //SEG500 mul8u_error::@2 b2: - //SEG496 [245] call print_str - //SEG497 [62] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG501 [247] call print_str + //SEG502 [62] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] print_str_from_b2: - //SEG498 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG499 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG503 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG504 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG500 mul8u_error::@3 + //SEG505 mul8u_error::@3 b3: - //SEG501 [246] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 + //SEG506 [248] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG502 [247] call print_byte - //SEG503 [107] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG507 [249] call print_byte + //SEG508 [113] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] print_byte_from_b3: - //SEG504 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG505 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG509 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG510 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG506 [248] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG511 [250] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] b4_from_b3: jmp b4 - //SEG507 mul8u_error::@4 + //SEG512 mul8u_error::@4 b4: - //SEG508 [249] call print_str - //SEG509 [62] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG513 [251] call print_str + //SEG514 [62] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] print_str_from_b4: - //SEG510 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG511 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG515 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG516 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG512 mul8u_error::@5 + //SEG517 mul8u_error::@5 b5: - //SEG513 [250] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 + //SEG518 [252] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 lda ms sta print_word.w lda ms+1 sta print_word.w+1 - //SEG514 [251] call print_word - //SEG515 [101] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG519 [253] call print_word + //SEG520 [107] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] print_word_from_b5: - //SEG516 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG517 [101] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG521 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG522 [107] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG518 [252] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG523 [254] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] b6_from_b5: jmp b6 - //SEG519 mul8u_error::@6 + //SEG524 mul8u_error::@6 b6: - //SEG520 [253] call print_str - //SEG521 [62] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG525 [255] call print_str + //SEG526 [62] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] print_str_from_b6: - //SEG522 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG523 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG527 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG528 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG524 mul8u_error::@7 + //SEG529 mul8u_error::@7 b7: - //SEG525 [254] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG530 [256] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG526 [255] call print_word - //SEG527 [101] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG531 [257] call print_word + //SEG532 [107] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] print_word_from_b7: - //SEG528 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG529 [101] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG533 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG534 [107] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG530 [256] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG535 [258] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] b8_from_b7: jmp b8 - //SEG531 mul8u_error::@8 + //SEG536 mul8u_error::@8 b8: - //SEG532 [257] call print_str - //SEG533 [62] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG537 [259] call print_str + //SEG538 [62] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] print_str_from_b8: - //SEG534 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG535 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG539 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG540 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG536 mul8u_error::@9 + //SEG541 mul8u_error::@9 b9: - //SEG537 [258] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG542 [260] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG538 [259] call print_word - //SEG539 [101] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG543 [261] call print_word + //SEG544 [107] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] print_word_from_b9: - //SEG540 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG541 [101] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG545 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG546 [107] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG542 [260] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG547 [262] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] b10_from_b9: jmp b10 - //SEG543 mul8u_error::@10 + //SEG548 mul8u_error::@10 b10: - //SEG544 [261] call print_ln - //SEG545 [57] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG549 [263] call print_ln + //SEG550 [57] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] print_ln_from_b10: - //SEG546 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG547 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG551 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG552 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG548 mul8u_error::@return + //SEG553 mul8u_error::@return breturn: - //SEG549 [262] return + //SEG554 [264] return rts str: .text "multiply mismatch @" } -//SEG550 mulf8u +//SEG555 mulf8u // Fast multiply two unsigned bytes to a word result // mulf8u(byte zeropage($6f) a, byte zeropage($70) b) mulf8u: { @@ -6868,45 +6905,45 @@ mulf8u: { .label a = $6f .label b = $70 .label return_2 = $71 - //SEG551 [263] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 + //SEG556 [265] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 lda a sta mulf8u_prepare.a - //SEG552 [264] call mulf8u_prepare - //SEG553 [183] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG557 [266] call mulf8u_prepare + //SEG558 [185] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] mulf8u_prepare_from_mulf8u: - //SEG554 [183] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG559 [185] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b1 - //SEG555 mulf8u::@1 + //SEG560 mulf8u::@1 b1: - //SEG556 [265] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 + //SEG561 [267] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 lda b sta mulf8u_prepared.b - //SEG557 [266] call mulf8u_prepared - //SEG558 [178] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared] + //SEG562 [268] call mulf8u_prepared + //SEG563 [180] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared] mulf8u_prepared_from_b1: - //SEG559 [178] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy + //SEG564 [180] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG560 [267] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG565 [269] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 lda mulf8u_prepared.return sta mulf8u_prepared.return_2 lda mulf8u_prepared.return+1 sta mulf8u_prepared.return_2+1 jmp b2 - //SEG561 mulf8u::@2 + //SEG566 mulf8u::@2 b2: - //SEG562 [268] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 + //SEG567 [270] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 lda mulf8u_prepared.return_2 sta return lda mulf8u_prepared.return_2+1 sta return+1 jmp breturn - //SEG563 mulf8u::@return + //SEG568 mulf8u::@return breturn: - //SEG564 [269] return + //SEG569 [271] return rts } -//SEG565 muls8u +//SEG570 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition // muls8u(byte zeropage($69) a, byte zeropage($6a) b) @@ -6917,29 +6954,29 @@ muls8u: { .label a = $69 .label b = $6a .label return_2 = $6b - //SEG566 [270] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + //SEG571 [272] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b1_from_muls8u - //SEG567 [271] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG572 [273] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] b2_from_muls8u: - //SEG568 [271] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 + //SEG573 [273] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG569 [271] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG574 [273] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b2 - //SEG570 [271] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG575 [273] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //SEG571 [271] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG572 [271] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG576 [273] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG577 [273] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG573 muls8u::@2 + //SEG578 muls8u::@2 b2: - //SEG574 [272] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 + //SEG579 [274] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 lda b clc adc m @@ -6947,153 +6984,153 @@ muls8u: { bcc !+ inc m+1 !: - //SEG575 [273] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 + //SEG580 [275] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG576 [274] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG581 [276] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuz1_neq_vbuz2_then_la1 lda i cmp a bne b2_from_b2 - //SEG577 [275] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG582 [277] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG578 [275] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG583 [277] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG579 [275] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG584 [277] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b1_from_muls8u: - //SEG580 [275] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG585 [277] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #0 sta return lda #0 sta return+1 jmp b1 - //SEG581 muls8u::@1 + //SEG586 muls8u::@1 b1: jmp breturn - //SEG582 muls8u::@return + //SEG587 muls8u::@return breturn: - //SEG583 [276] return + //SEG588 [278] return rts } -//SEG584 mulf_tables_cmp +//SEG589 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = $2b .label kc_sqr = $29 - //SEG585 [278] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG590 [280] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] b1_from_mulf_tables_cmp: - //SEG586 [278] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG591 [280] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG587 [278] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG592 [280] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG588 [278] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG593 [280] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] b1_from_b2: - //SEG589 [278] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG590 [278] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG594 [280] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG595 [280] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy jmp b1 - //SEG591 mulf_tables_cmp::@1 + //SEG596 mulf_tables_cmp::@1 b1: - //SEG592 [279] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG597 [281] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG593 mulf_tables_cmp::@3 + //SEG598 mulf_tables_cmp::@3 b3: - //SEG594 [280] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG599 [282] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG595 [281] call print_str - //SEG596 [62] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG600 [283] call print_str + //SEG601 [62] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] print_str_from_b3: - //SEG597 [62] phi (byte*) print_char_cursor#152 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG602 [62] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG598 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG603 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG599 mulf_tables_cmp::@5 + //SEG604 mulf_tables_cmp::@5 b5: - //SEG600 [282] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 + //SEG605 [284] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 lda asm_sqr sta print_word.w lda asm_sqr+1 sta print_word.w+1 - //SEG601 [283] call print_word - //SEG602 [101] phi from mulf_tables_cmp::@5 to print_word [phi:mulf_tables_cmp::@5->print_word] + //SEG606 [285] call print_word + //SEG607 [107] phi from mulf_tables_cmp::@5 to print_word [phi:mulf_tables_cmp::@5->print_word] print_word_from_b5: - //SEG603 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@5->print_word#0] -- register_copy - //SEG604 [101] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@5->print_word#1] -- register_copy + //SEG608 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@5->print_word#0] -- register_copy + //SEG609 [107] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@5->print_word#1] -- register_copy jsr print_word - //SEG605 [284] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@6] + //SEG610 [286] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@6] b6_from_b5: jmp b6 - //SEG606 mulf_tables_cmp::@6 + //SEG611 mulf_tables_cmp::@6 b6: - //SEG607 [285] call print_str - //SEG608 [62] phi from mulf_tables_cmp::@6 to print_str [phi:mulf_tables_cmp::@6->print_str] + //SEG612 [287] call print_str + //SEG613 [62] phi from mulf_tables_cmp::@6 to print_str [phi:mulf_tables_cmp::@6->print_str] print_str_from_b6: - //SEG609 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@6->print_str#0] -- register_copy - //SEG610 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@6->print_str#1] -- pbuz1=pbuc1 + //SEG614 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@6->print_str#0] -- register_copy + //SEG615 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@6->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG611 mulf_tables_cmp::@7 + //SEG616 mulf_tables_cmp::@7 b7: - //SEG612 [286] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG617 [288] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG613 [287] call print_word - //SEG614 [101] phi from mulf_tables_cmp::@7 to print_word [phi:mulf_tables_cmp::@7->print_word] + //SEG618 [289] call print_word + //SEG619 [107] phi from mulf_tables_cmp::@7 to print_word [phi:mulf_tables_cmp::@7->print_word] print_word_from_b7: - //SEG615 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@7->print_word#0] -- register_copy - //SEG616 [101] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@7->print_word#1] -- register_copy + //SEG620 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@7->print_word#0] -- register_copy + //SEG621 [107] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@7->print_word#1] -- register_copy jsr print_word - //SEG617 [288] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return] + //SEG622 [290] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return] breturn_from_b7: - //SEG618 [288] phi (byte*) print_line_cursor#10 = (byte*) 1024 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG623 [290] phi (byte*) print_line_cursor#10 = (byte*) 1024 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG619 [288] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy + //SEG624 [290] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy jmp breturn - //SEG620 mulf_tables_cmp::@return + //SEG625 mulf_tables_cmp::@return breturn: - //SEG621 [289] return + //SEG626 [291] return rts - //SEG622 mulf_tables_cmp::@2 + //SEG627 mulf_tables_cmp::@2 b2: - //SEG623 [290] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG628 [292] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG624 [291] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG629 [293] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG625 [292] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG630 [294] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1_from_b2 @@ -7102,64 +7139,64 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@4] + //SEG631 [295] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@4 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@4] b4_from_b2: jmp b4 - //SEG627 mulf_tables_cmp::@4 + //SEG632 mulf_tables_cmp::@4 b4: - //SEG628 [294] call print_str - //SEG629 [62] phi from mulf_tables_cmp::@4 to print_str [phi:mulf_tables_cmp::@4->print_str] + //SEG633 [296] call print_str + //SEG634 [62] phi from mulf_tables_cmp::@4 to print_str [phi:mulf_tables_cmp::@4->print_str] print_str_from_b4: - //SEG630 [62] phi (byte*) print_char_cursor#152 = (byte*) 1024 [phi:mulf_tables_cmp::@4->print_str#0] -- pbuz1=pbuc1 + //SEG635 [62] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@4->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG631 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@4->print_str#1] -- pbuz1=pbuc1 + //SEG636 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG632 [295] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@8 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@8] + //SEG637 [297] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@8 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@8] b8_from_b4: jmp b8 - //SEG633 mulf_tables_cmp::@8 + //SEG638 mulf_tables_cmp::@8 b8: - //SEG634 [296] call print_ln - //SEG635 [57] phi from mulf_tables_cmp::@8 to print_ln [phi:mulf_tables_cmp::@8->print_ln] + //SEG639 [298] call print_ln + //SEG640 [57] phi from mulf_tables_cmp::@8 to print_ln [phi:mulf_tables_cmp::@8->print_ln] print_ln_from_b8: - //SEG636 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_ln#0] -- register_copy - //SEG637 [57] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@8->print_ln#1] -- pbuz1=pbuc1 + //SEG641 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@8->print_ln#0] -- register_copy + //SEG642 [57] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@8->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b9 - //SEG638 mulf_tables_cmp::@9 + //SEG643 mulf_tables_cmp::@9 b9: - //SEG639 [297] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG644 [299] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG640 [288] phi from mulf_tables_cmp::@9 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return] + //SEG645 [290] phi from mulf_tables_cmp::@9 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return] breturn_from_b9: - //SEG641 [288] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#0] -- register_copy - //SEG642 [288] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#1] -- register_copy + //SEG646 [290] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#0] -- register_copy + //SEG647 [290] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#227 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG643 mulf_init_asm +//SEG648 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { // Ensure the ASM tables are not detected as unused by the optimizer .label mem = $ff - //SEG644 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG649 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -7198,25 +7235,25 @@ mulf_init_asm: { dey inx bne !- - //SEG645 [299] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG646 [300] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG647 [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG648 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem jmp breturn - //SEG649 mulf_init_asm::@return + //SEG654 mulf_init_asm::@return breturn: - //SEG650 [303] return + //SEG655 [305] return rts } -//SEG651 mulf_init +//SEG656 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label _7 = $85 @@ -7231,88 +7268,88 @@ mulf_init: { .label x_255 = $35 .label sqr2_lo = $36 .label dir = $3a - //SEG652 [305] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG657 [307] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG653 [305] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG658 [307] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG654 [305] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG659 [307] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG655 [305] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG660 [307] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG656 [305] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG661 [307] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG657 [305] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + //SEG662 [307] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG658 [305] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG663 [307] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG659 [305] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG660 [305] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG661 [305] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG662 [305] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG663 [305] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG664 [307] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG665 [307] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG666 [307] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG667 [307] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG668 [307] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG664 mulf_init::@1 + //SEG669 mulf_init::@1 b1: - //SEG665 [306] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG670 [308] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG666 [307] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG671 [309] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _7 - //SEG667 [308] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG672 [310] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _7 cmp #0 bne b2_from_b1 jmp b3 - //SEG668 mulf_init::@3 + //SEG673 mulf_init::@3 b3: - //SEG669 [309] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG674 [311] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG670 [310] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG675 [312] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG671 [311] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + //SEG676 [313] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] b2_from_b1: b2_from_b3: - //SEG672 [311] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - //SEG673 [311] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + //SEG677 [313] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + //SEG678 [313] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy jmp b2 - //SEG674 mulf_init::@2 + //SEG679 mulf_init::@2 b2: - //SEG675 [312] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG680 [314] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _10 - //SEG676 [313] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuz2 + //SEG681 [315] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuz2 lda _10 ldy #0 sta (sqr1_lo),y - //SEG677 [314] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG682 [316] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _11 - //SEG678 [315] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuz2 + //SEG683 [317] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuz2 lda _11 ldy #0 sta (sqr1_hi),y - //SEG679 [316] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG684 [318] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG680 [317] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG685 [319] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -7320,93 +7357,93 @@ mulf_init: { bcc !+ inc sqr+1 !: - //SEG681 [318] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG686 [320] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG682 [319] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG687 [321] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@4] + //SEG688 [322] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] b4_from_b2: - //SEG684 [320] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG689 [322] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG685 [320] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + //SEG690 [322] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG686 [320] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + //SEG691 [322] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG687 [320] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuz1=vbuc1 + //SEG692 [322] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b4 - //SEG688 [320] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + //SEG693 [322] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] b4_from_b5: - //SEG689 [320] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - //SEG690 [320] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - //SEG691 [320] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - //SEG692 [320] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + //SEG694 [322] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + //SEG695 [322] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + //SEG696 [322] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + //SEG697 [322] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy jmp b4 - //SEG693 mulf_init::@4 + //SEG698 mulf_init::@4 b4: - //SEG694 [321] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG699 [323] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG695 [322] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG700 [324] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG696 [323] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG701 [325] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG697 [324] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG702 [326] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG698 [325] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuz1_neq_0_then_la1 + //SEG703 [327] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b7_from_b4 - //SEG699 [327] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + //SEG704 [329] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] b5_from_b4: - //SEG700 [327] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + //SEG705 [329] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b5 - //SEG701 [326] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + //SEG706 [328] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] b7_from_b4: jmp b7 - //SEG702 mulf_init::@7 + //SEG707 mulf_init::@7 b7: - //SEG703 [327] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + //SEG708 [329] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] b5_from_b7: - //SEG704 [327] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + //SEG709 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy jmp b5 - //SEG705 mulf_init::@5 + //SEG710 mulf_init::@5 b5: - //SEG706 [328] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG711 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG707 [329] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG712 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4_from_b5 @@ -7414,49 +7451,49 @@ mulf_init: { cmp #print_cls::@1] + //SEG719 [336] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG715 [334] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG720 [336] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG716 [334] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG721 [336] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG717 [334] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG722 [336] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG718 print_cls::@1 + //SEG723 print_cls::@1 b1: - //SEG719 [335] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG724 [337] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG720 [336] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG725 [338] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG721 [337] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG726 [339] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -7464,12 +7501,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG722 print_cls::@return + //SEG727 print_cls::@return breturn: - //SEG723 [338] return + //SEG728 [340] return rts } -//SEG724 File Data +//SEG729 File Data print_hextab: .text "0123456789abcdef" // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // =(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] ) always clobbers reg byte a -Statement [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [98] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#134 print_word::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#134 print_word::w#0 ] ) always clobbers reg byte a -Statement [102] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:283 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:287 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a -Statement [104] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:283 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:287 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [108] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:103 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:103 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:103 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:103 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:103 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:103 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:103 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:103 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:105 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:105 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:105 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:105 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:105 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:105 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:105 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:105 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:125 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:125 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:243 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:247 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -Statement [111] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:103 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:103 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:103 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:103 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:103 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:103 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:103 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:103 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:105 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:105 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:105 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:105 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:105 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:105 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:105 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:105 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:125 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:125 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:243 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:247 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [116] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_char:95 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_char:95 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:103::print_char:110 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:103::print_char:110 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:103::print_char:110 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:103::print_char:110 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:103::print_char:110 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:103::print_char:110 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:103::print_char:110 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:103::print_char:110 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:105::print_char:110 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:105::print_char:110 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:105::print_char:110 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:105::print_char:110 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:105::print_char:110 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:105::print_char:110 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:105::print_char:110 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:105::print_char:110 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:125::print_char:110 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:125::print_char:110 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:243::print_char:110 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:247::print_char:110 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:103::print_char:113 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:103::print_char:113 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:103::print_char:113 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:103::print_char:113 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:103::print_char:113 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:103::print_char:113 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:103::print_char:113 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:103::print_char:113 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:105::print_char:113 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:105::print_char:113 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:105::print_char:113 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:105::print_char:113 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:105::print_char:113 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:105::print_char:113 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:105::print_char:113 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:105::print_char:113 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:125::print_char:113 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:125::print_char:113 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:243::print_char:113 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:247::print_char:113 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_char:122 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_char:122 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_char:128 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_char:128 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Statement [66] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:70 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:74 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:78 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:82 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:86 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:243 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:247 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:251 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:255 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:259 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:283 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:287 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:296 [ print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [69] (byte*~) print_char_cursor#191 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#191 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#191 ] ) always clobbers reg byte a +Statement [79] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#1 ] ) always clobbers reg byte a +Statement [83] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#2 ] ) always clobbers reg byte a +Statement [87] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#3 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#3 ] ) always clobbers reg byte a +Statement [93] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#134 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] ) always clobbers reg byte a +Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#19 print_word::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a +Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a +Statement [104] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 [ print_char_cursor#86 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_char:95 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_char:95 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_char:101 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_char:101 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:109::print_char:116 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:109::print_char:116 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:109::print_char:116 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:109::print_char:116 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:109::print_char:116 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:109::print_char:116 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:109::print_char:116 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:109::print_char:116 [ print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:111::print_char:116 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:111::print_char:116 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:111::print_char:116 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:111::print_char:116 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:111::print_char:116 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:111::print_char:116 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:111::print_char:116 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:111::print_char:116 [ print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:127::print_char:116 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:127::print_char:116 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:245::print_char:116 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:249::print_char:116 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:109::print_char:119 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:109::print_char:119 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:109::print_char:119 [ print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:109::print_char:119 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:109::print_char:119 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:109::print_char:119 [ print_line_cursor#10 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:109::print_char:119 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:109::print_char:119 [ print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:111::print_char:119 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:111::print_char:119 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:111::print_char:119 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:111::print_char:119 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:111::print_char:119 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:111::print_char:119 [ print_line_cursor#10 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:111::print_char:119 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:111::print_char:119 [ print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:127::print_char:119 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:127::print_char:119 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:245::print_char:119 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:249::print_char:119 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_char:124 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_char:124 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_char:130 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_char:130 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#86 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:16 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] -Statement [129] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [133] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a +Statement [108] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98 [ print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261 [ print_line_cursor#10 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:285 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:289 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a +Statement [110] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261 [ print_line_cursor#10 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:285 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:289 [ print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a +Statement [114] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:109 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:109 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:109 [ print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:109 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:109 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:109 [ print_line_cursor#10 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:109 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:109 [ print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:111 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:111 [ print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:111 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:111 [ print_line_cursor#10 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:111 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:111 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:245 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:249 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +Statement [117] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:109 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:109 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:109 [ print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:109 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:109 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:109 [ print_line_cursor#10 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:109 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:109 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:111 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:111 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:111 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:111 [ print_line_cursor#10 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:111 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:111 [ print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:245 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:249 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a +Statement [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [135] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ mul8s::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ mul8s::b#0 ] -Statement [134] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [136] (byte~) mul8s::$9 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ) always clobbers reg byte a -Statement [137] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a -Statement [141] (byte~) mul8s::$13 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$13 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$13 ] ) always clobbers reg byte a -Statement [142] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a -Statement [152] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:132 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:214 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [136] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a +Statement [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ) always clobbers reg byte a +Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a +Statement [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$13 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$13 ] ) always clobbers reg byte a +Statement [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a +Statement [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:134 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:216 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Statement [161] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [165] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a +Statement [163] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a +Statement [167] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:94 [ mulf8s_prepared::b#0 ] -Statement [166] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [167] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [168] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [169] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [173] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [174] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [168] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [169] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [170] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a +Statement [171] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [175] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a +Statement [176] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:94 [ mulf8s_prepared::b#0 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:35 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:36 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Statement [181] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160::mulf8u_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:209::mulf8u_prepared:266 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [183] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162::mulf8u_prepared:166 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:211::mulf8u_prepared:268 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ mulf8s::b#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:112 [ mulf8u::b#0 ] -Statement [190] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a +Statement [192] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ muls8s::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ muls8s::b#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ muls8s::j#2 muls8s::j#1 ] -Statement [196] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a +Statement [198] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ muls8s::i#2 muls8s::i#1 ] -Statement [205] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a -Statement [206] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a -Statement [210] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a -Statement [211] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a -Statement [215] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a -Statement [216] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [217] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a +Statement [207] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a +Statement [208] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a +Statement [212] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a +Statement [213] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a +Statement [217] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a +Statement [218] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [219] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [222] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] -Statement [224] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [227] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a -Statement [228] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a -Statement [229] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [250] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:230 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [254] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:230 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [258] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:230 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a -Statement [267] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:209 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [268] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:209 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a -Statement [272] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:204 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a +Statement [226] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a +Statement [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a +Statement [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [252] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#134 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#134 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [256] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#134 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#134 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [260] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#134 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#134 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a +Statement [269] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:211 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a +Statement [270] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:211 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a +Statement [274] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:206 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:105 [ muls8u::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:106 [ muls8u::b#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ muls8u::i#2 muls8u::i#1 ] -Statement [279] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [280] *((const byte*) BGCOL#0) ← (byte) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a -Statement [282] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a -Statement [286] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#2 ] ) always clobbers reg byte a -Statement [292] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a -Statement [297] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a +Statement [281] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [282] *((const byte*) BGCOL#0) ← (byte) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a +Statement [284] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a +Statement [288] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#134 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#2 ] ) always clobbers reg byte a +Statement [294] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a +Statement [299] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#227 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#227 ] ) always clobbers reg byte a Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y -Statement [299] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [300] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [312] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a +Statement [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [314] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [313] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [315] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:45 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:50 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [314] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a -Statement [315] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [317] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [319] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [321] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [316] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a +Statement [317] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [319] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [321] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [323] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:53 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:58 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:58 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [322] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [324] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [329] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [330] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [331] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [335] *((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 [337] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [324] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [326] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [332] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [333] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [337] *((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 [339] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a Statement [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ) always clobbers reg byte a @@ -7651,99 +7688,99 @@ Statement [41] *((const byte*) BGCOL#0) ← (byte) 2 [ mul8s_compare::a#7 mul8s_ Statement [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 [ mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [53] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_char_cursor#187 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#187 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [59] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:90 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:239 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:230::print_ln:261 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:296 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:90 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:239 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:230::print_ln:261 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:296 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [64] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:70 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:74 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:78 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:82 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:86 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:237 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:241 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:245 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:249 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:253 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:257 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:281 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:285 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:294 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y -Statement [66] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:70 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:74 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:78 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:82 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:86 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:237 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:241 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:245 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:249 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:253 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:230::print_str:257 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:281 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:285 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:294 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y -Statement [69] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#188 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#188 ] ) always clobbers reg byte a -Statement [79] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ) always clobbers reg byte a -Statement [83] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ) always clobbers reg byte a -Statement [87] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#3 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a -Statement [93] if((signed word) print_sword::w#4>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] ) always clobbers reg byte a -Statement [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [98] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#134 print_word::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#134 print_word::w#0 ] ) always clobbers reg byte a -Statement [102] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:283 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:287 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a -Statement [104] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:283 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:287 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [108] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:103 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:103 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:103 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:103 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:103 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:103 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:103 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:103 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:105 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:105 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:105 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:105 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:105 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:105 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:105 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:105 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:125 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:125 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:243 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:247 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a -Statement [111] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:103 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:103 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:103 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:103 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:103 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:103 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:103 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:103 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:105 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:105 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:105 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:105 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:105 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:105 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:105 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:105 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:125 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:125 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:243 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:247 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [116] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_char:95 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_char:95 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:103::print_char:110 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:103::print_char:110 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:103::print_char:110 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:103::print_char:110 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:103::print_char:110 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:103::print_char:110 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:103::print_char:110 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:103::print_char:110 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:105::print_char:110 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:105::print_char:110 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:105::print_char:110 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:105::print_char:110 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:105::print_char:110 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:105::print_char:110 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:105::print_char:110 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:105::print_char:110 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:125::print_char:110 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:125::print_char:110 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:243::print_char:110 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:247::print_char:110 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:103::print_char:113 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:103::print_char:113 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:103::print_char:113 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:103::print_char:113 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:103::print_char:113 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:103::print_char:113 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:103::print_char:113 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:103::print_char:113 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:99::print_byte:105::print_char:113 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:99::print_byte:105::print_char:113 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:99::print_byte:105::print_char:113 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:251::print_byte:105::print_char:113 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:255::print_byte:105::print_char:113 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_word:259::print_byte:105::print_char:113 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:283::print_byte:105::print_char:113 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:287::print_byte:105::print_char:113 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:125::print_char:113 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:125::print_char:113 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:243::print_char:113 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:230::print_byte:247::print_char:113 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_char:122 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_char:122 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_char:128 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_char:128 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y -Statement [129] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [133] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a -Statement [134] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [136] (byte~) mul8s::$9 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ) always clobbers reg byte a -Statement [137] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a -Statement [141] (byte~) mul8s::$13 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$13 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$13 ] ) always clobbers reg byte a -Statement [142] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a -Statement [150] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:132 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:214 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [152] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:132 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:214 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [161] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [165] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a -Statement [166] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [167] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [168] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a -Statement [169] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [173] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a -Statement [174] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [53] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ print_char_cursor#190 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#190 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [59] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:90 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:263 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:298 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a +Statement [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:90 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:263 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:298 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a +Statement [64] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:70 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:74 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:78 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:82 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:86 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:243 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:247 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:251 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:255 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:259 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:283 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:287 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:296 [ print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [66] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:70 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:74 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:78 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:82 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:86 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:243 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:247 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:251 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:255 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:259 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:283 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:287 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:296 [ print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [69] (byte*~) print_char_cursor#191 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#191 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#191 ] ) always clobbers reg byte a +Statement [79] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#1 ] ) always clobbers reg byte a +Statement [83] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#2 ] ) always clobbers reg byte a +Statement [87] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#3 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#3 ] ) always clobbers reg byte a +Statement [93] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#134 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] ) always clobbers reg byte a +Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#19 print_word::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a +Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a +Statement [104] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 [ print_char_cursor#86 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_char:95 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_char:95 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_char:101 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_char:101 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:109::print_char:116 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:109::print_char:116 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:109::print_char:116 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:109::print_char:116 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:109::print_char:116 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:109::print_char:116 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:109::print_char:116 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:109::print_char:116 [ print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:111::print_char:116 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:111::print_char:116 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:111::print_char:116 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:111::print_char:116 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:111::print_char:116 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:111::print_char:116 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:111::print_char:116 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:111::print_char:116 [ print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:127::print_char:116 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:127::print_char:116 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:245::print_char:116 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:249::print_char:116 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:109::print_char:119 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:109::print_char:119 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:109::print_char:119 [ print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:109::print_char:119 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:109::print_char:119 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:109::print_char:119 [ print_line_cursor#10 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:109::print_char:119 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:109::print_char:119 [ print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:111::print_char:119 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:111::print_char:119 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:111::print_char:119 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:111::print_char:119 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:111::print_char:119 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:111::print_char:119 [ print_line_cursor#10 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:111::print_char:119 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:111::print_char:119 [ print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:127::print_char:119 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:127::print_char:119 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:245::print_char:119 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:249::print_char:119 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_char:124 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_char:124 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_char:130 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_char:130 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#86 ] ) always clobbers reg byte y +Statement [108] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98 [ print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261 [ print_line_cursor#10 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:285 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:289 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a +Statement [110] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261 [ print_line_cursor#10 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:285 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:289 [ print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a +Statement [114] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:109 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:109 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:109 [ print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:109 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:109 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:109 [ print_line_cursor#10 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:109 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:109 [ print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:111 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:111 [ print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:111 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:111 [ print_line_cursor#10 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:111 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:111 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:245 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:249 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a +Statement [117] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:109 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:109 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:109 [ print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:109 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:109 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:109 [ print_line_cursor#10 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:109 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:109 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:80::print_word:98::print_byte:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:84::print_word:98::print_byte:111 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:88::print_word:98::print_byte:111 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:253::print_byte:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:257::print_byte:111 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:261::print_byte:111 [ print_line_cursor#10 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:285::print_byte:111 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:289::print_byte:111 [ print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:245 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:249 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a +Statement [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:72 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:76 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [135] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a +Statement [136] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a +Statement [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ) always clobbers reg byte a +Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a +Statement [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$13 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$13 ] ) always clobbers reg byte a +Statement [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a +Statement [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:134 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:216 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:134 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:216 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [163] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a +Statement [167] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a +Statement [168] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [169] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [170] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a +Statement [171] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [175] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a +Statement [176] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Statement [181] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:160::mulf8u_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:209::mulf8u_prepared:266 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [183] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162::mulf8u_prepared:166 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:211::mulf8u_prepared:268 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [190] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a -Statement [196] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a -Statement [205] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a -Statement [206] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a -Statement [210] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a -Statement [211] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a -Statement [215] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a -Statement [216] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [217] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a -Statement [224] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [227] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a -Statement [228] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a -Statement [229] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [250] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:230 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [254] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:230 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [258] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:230 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a -Statement [267] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:209 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [268] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:209 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a -Statement [272] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:204 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a -Statement [279] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [280] *((const byte*) BGCOL#0) ← (byte) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a -Statement [282] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a -Statement [286] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#2 ] ) always clobbers reg byte a -Statement [292] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a -Statement [297] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a +Statement [192] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a +Statement [198] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a +Statement [207] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a +Statement [208] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a +Statement [212] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a +Statement [213] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a +Statement [217] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a +Statement [218] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [219] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [222] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a +Statement [226] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a +Statement [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a +Statement [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#32 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#32 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [252] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#134 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#134 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [256] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#134 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#134 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [260] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#134 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#134 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a +Statement [269] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:211 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a +Statement [270] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:211 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a +Statement [274] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:206 [ print_line_cursor#10 print_char_cursor#32 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a +Statement [281] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [282] *((const byte*) BGCOL#0) ← (byte) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a +Statement [284] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a +Statement [288] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#134 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#2 ] ) always clobbers reg byte a +Statement [294] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a +Statement [299] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#227 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#227 ] ) always clobbers reg byte a Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y -Statement [299] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [300] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [307] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ) always clobbers reg byte a -Statement [312] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a -Statement [313] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [314] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a -Statement [315] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [317] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [319] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [321] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [322] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [324] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [329] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [330] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [331] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [335] *((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 [337] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [309] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ) always clobbers reg byte a +Statement [314] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a +Statement [315] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [316] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a +Statement [317] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [319] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [321] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [323] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [324] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [326] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [332] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [333] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [337] *((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 [339] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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 [ mul8s_compare::a#7 mul8s_compare::a#1 ] : zp ZP_BYTE:2 , reg byte y , Potential registers zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] : zp ZP_BYTE:3 , reg byte y , Potential registers zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , Potential registers zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] : zp ZP_WORD:5 , Potential registers zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] : zp ZP_WORD:7 , -Potential registers zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] : zp ZP_WORD:9 , -Potential registers zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:11 , -Potential registers zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:13 , reg byte x , -Potential registers zp ZP_BYTE:14 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#187 print_char_cursor#188 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] : zp ZP_WORD:15 , +Potential registers zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] : zp ZP_WORD:9 , +Potential registers zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:12 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:12 , +Potential registers zp ZP_WORD:14 [ print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#190 print_char_cursor#191 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#32 print_char_cursor#1 print_char_cursor#227 ] : zp ZP_WORD:14 , +Potential registers zp ZP_BYTE:16 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:16 , reg byte x , Potential registers zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , Potential registers zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] : zp ZP_WORD:18 , Potential registers zp ZP_BYTE:20 [ mul8u::b#0 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , @@ -7836,18 +7873,18 @@ Uplift Scope [mul8u_compare] 235.67: zp ZP_BYTE:37 [ mul8u_compare::ok#3 mul8u_c Uplift Scope [mulf8u] 202: zp ZP_WORD:113 [ mulf8u::return#2 ] 51.5: zp ZP_BYTE:111 [ mulf8u::a#0 ] 34.33: zp ZP_BYTE:112 [ mulf8u::b#0 ] 34.33: zp ZP_WORD:131 [ mulf8u::return#0 ] Uplift Scope [mulf8s] 202: zp ZP_WORD:69 [ mulf8s::return#2 ] 34.33: zp ZP_WORD:95 [ mulf8s::return#0 ] 33.67: zp ZP_BYTE:67 [ mulf8s::a#0 ] 25.75: zp ZP_BYTE:68 [ mulf8s::b#0 ] Uplift Scope [mulf_init] 45.1: zp ZP_WORD:51 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:45 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:50 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:133 [ mulf_init::$7 ] 22: zp ZP_BYTE:134 [ mulf_init::$10 ] 22: zp ZP_BYTE:135 [ mulf_init::$11 ] 20.62: zp ZP_WORD:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:46 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:53 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:56 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:58 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:48 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [] 79.74: zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#187 print_char_cursor#188 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] 34.74: zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] +Uplift Scope [] 77.65: zp ZP_WORD:14 [ print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#190 print_char_cursor#191 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#32 print_char_cursor#1 print_char_cursor#227 ] 34.74: zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] Uplift Scope [mul8s] 13.83: zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 9.36: zp ZP_BYTE:74 [ mul8s::b#0 ] 7.36: zp ZP_BYTE:73 [ mul8s::a#0 ] 4: zp ZP_BYTE:89 [ mul8s::$9 ] 4: zp ZP_BYTE:90 [ mul8s::$16 ] 4: zp ZP_BYTE:91 [ mul8s::$13 ] 4: zp ZP_BYTE:92 [ mul8s::$17 ] Uplift Scope [mulf_tables_cmp] 20.17: zp ZP_WORD:41 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] 15.58: zp ZP_WORD:43 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] Uplift Scope [print_str] 35.5: zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:59 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [print_byte] 23.5: zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:85 [ print_byte::$0 ] 4: zp ZP_BYTE:86 [ print_byte::$2 ] +Uplift Scope [print_byte] 23.5: zp ZP_BYTE:16 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:85 [ print_byte::$0 ] 4: zp ZP_BYTE:86 [ print_byte::$2 ] Uplift Scope [mulf8s_prepared] 13.83: zp ZP_WORD:27 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_BYTE:99 [ mulf8s_prepared::$8 ] 4: zp ZP_BYTE:100 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:101 [ mulf8s_prepared::$12 ] 4: zp ZP_BYTE:102 [ mulf8s_prepared::$16 ] 0.4: zp ZP_BYTE:94 [ mulf8s_prepared::b#0 ] -Uplift Scope [print_word] 29.33: zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplift Scope [print_word] 29.33: zp ZP_WORD:12 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] Uplift Scope [mulf8u_prepared] 14: zp ZP_BYTE:29 [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] 4: zp ZP_WORD:97 [ mulf8u_prepared::return#3 ] 4: zp ZP_WORD:129 [ mulf8u_prepared::return#2 ] 1.5: zp ZP_WORD:103 [ mulf8u_prepared::return#0 ] -Uplift Scope [print_sword] 23: zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] +Uplift Scope [print_sword] 22: zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] Uplift Scope [print_sbyte] 17.67: zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:14 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:11 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] Uplift Scope [mulf8u_prepare] 14: zp ZP_BYTE:30 [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] Uplift Scope [mul8u_error] 0.57: zp ZP_BYTE:121 [ mul8u_error::a#0 ] 0.4: zp ZP_BYTE:122 [ mul8u_error::b#0 ] 0.31: zp ZP_WORD:123 [ mul8u_error::ms#0 ] 0.25: zp ZP_WORD:125 [ mul8u_error::mn#0 ] 0.21: zp ZP_WORD:127 [ mul8u_error::mf#0 ] Uplift Scope [mul8s_error] 0.57: zp ZP_BYTE:77 [ mul8s_error::a#0 ] 0.4: zp ZP_BYTE:78 [ mul8s_error::b#0 ] 0.31: zp ZP_WORD:79 [ mul8s_error::ms#0 ] 0.25: zp ZP_WORD:81 [ mul8s_error::mn#0 ] 0.21: zp ZP_WORD:83 [ mul8s_error::mf#0 ] @@ -7855,71 +7892,71 @@ Uplift Scope [print_ln] Uplift Scope [main] Uplift Scope [mulf_init_asm] -Uplifting [muls8s] best 312411 combination zp ZP_WORD:32 [ muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] zp ZP_WORD:63 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp ZP_BYTE:61 [ muls8s::a#0 ] -Uplifting [mul8u] best 302799 combination zp ZP_WORD:23 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:25 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#1 ] zp ZP_WORD:117 [ mul8u::return#3 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:87 [ mul8u::return#2 ] +Uplifting [muls8s] best 312428 combination zp ZP_WORD:32 [ muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] zp ZP_WORD:63 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp ZP_BYTE:61 [ muls8s::a#0 ] +Uplifting [mul8u] best 302816 combination zp ZP_WORD:23 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:25 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#1 ] zp ZP_WORD:117 [ mul8u::return#3 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:87 [ mul8u::return#2 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [muls8u] best 292499 combination zp ZP_WORD:39 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:107 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:105 [ muls8u::a#0 ] -Uplifting [mul8s_compare] best 291299 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] zp ZP_WORD:75 [ mul8s_compare::mn#0 ] zp ZP_WORD:65 [ mul8s_compare::ms#0 ] zp ZP_WORD:71 [ mul8s_compare::mf#0 ] -Uplifting [mul8u_compare] best 290099 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp ZP_BYTE:36 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp ZP_BYTE:35 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp ZP_WORD:119 [ mul8u_compare::mn#0 ] zp ZP_WORD:109 [ mul8u_compare::ms#0 ] zp ZP_WORD:115 [ mul8u_compare::mf#0 ] -Uplifting [mulf8u] best 289493 combination zp ZP_WORD:113 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp ZP_WORD:131 [ mulf8u::return#0 ] -Uplifting [mulf8s] best 288887 combination zp ZP_WORD:69 [ mulf8s::return#2 ] zp ZP_WORD:95 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] -Uplifting [mulf_init] best 288637 combination zp ZP_WORD:51 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:50 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$7 ] reg byte a [ mulf_init::$10 ] reg byte a [ mulf_init::$11 ] zp ZP_WORD:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:46 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:53 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:56 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:58 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:48 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [muls8u] best 292516 combination zp ZP_WORD:39 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:107 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:105 [ muls8u::a#0 ] +Uplifting [mul8s_compare] best 291316 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] zp ZP_WORD:75 [ mul8s_compare::mn#0 ] zp ZP_WORD:65 [ mul8s_compare::ms#0 ] zp ZP_WORD:71 [ mul8s_compare::mf#0 ] +Uplifting [mul8u_compare] best 290116 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp ZP_BYTE:36 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp ZP_BYTE:35 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp ZP_WORD:119 [ mul8u_compare::mn#0 ] zp ZP_WORD:109 [ mul8u_compare::ms#0 ] zp ZP_WORD:115 [ mul8u_compare::mf#0 ] +Uplifting [mulf8u] best 289510 combination zp ZP_WORD:113 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp ZP_WORD:131 [ mulf8u::return#0 ] +Uplifting [mulf8s] best 288904 combination zp ZP_WORD:69 [ mulf8s::return#2 ] zp ZP_WORD:95 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] +Uplifting [mulf_init] best 288654 combination zp ZP_WORD:51 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:50 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$7 ] reg byte a [ mulf_init::$10 ] reg byte a [ mulf_init::$11 ] zp ZP_WORD:54 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:46 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:53 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:56 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:58 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:48 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [] best 288637 combination zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#187 print_char_cursor#188 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] -Uplifting [mul8s] best 288324 combination zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp ZP_BYTE:73 [ mul8s::a#0 ] reg byte a [ mul8s::$9 ] reg byte a [ mul8s::$16 ] zp ZP_BYTE:91 [ mul8s::$13 ] zp ZP_BYTE:92 [ mul8s::$17 ] +Uplifting [] best 288654 combination zp ZP_WORD:14 [ print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#190 print_char_cursor#191 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#32 print_char_cursor#1 print_char_cursor#227 ] zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] +Uplifting [mul8s] best 288341 combination zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp ZP_BYTE:73 [ mul8s::a#0 ] reg byte a [ mul8s::$9 ] reg byte a [ mul8s::$16 ] zp ZP_BYTE:91 [ mul8s::$13 ] zp ZP_BYTE:92 [ mul8s::$17 ] Limited combination testing to 100 combinations of 2304 possible. -Uplifting [mulf_tables_cmp] best 288324 combination zp ZP_WORD:41 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp ZP_WORD:43 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] -Uplifting [print_str] best 288324 combination zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] -Uplifting [print_cls] best 288324 combination zp ZP_WORD:59 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 288301 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [mulf8s_prepared] best 288277 combination zp ZP_WORD:27 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp ZP_BYTE:94 [ mulf8s_prepared::b#0 ] +Uplifting [mulf_tables_cmp] best 288341 combination zp ZP_WORD:41 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp ZP_WORD:43 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] +Uplifting [print_str] best 288341 combination zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] +Uplifting [print_cls] best 288341 combination zp ZP_WORD:59 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 288318 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [mulf8s_prepared] best 288294 combination zp ZP_WORD:27 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp ZP_BYTE:94 [ mulf8s_prepared::b#0 ] Limited combination testing to 100 combinations of 512 possible. -Uplifting [print_word] best 288277 combination zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplifting [mulf8u_prepared] best 288268 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] zp ZP_WORD:97 [ mulf8u_prepared::return#3 ] zp ZP_WORD:129 [ mulf8u_prepared::return#2 ] zp ZP_WORD:103 [ mulf8u_prepared::return#0 ] -Uplifting [print_sword] best 288268 combination zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] -Uplifting [print_sbyte] best 288256 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] -Uplifting [print_char] best 288238 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [mulf8u_prepare] best 288229 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] -Uplifting [mul8u_error] best 288223 combination reg byte x [ mul8u_error::a#0 ] zp ZP_BYTE:122 [ mul8u_error::b#0 ] zp ZP_WORD:123 [ mul8u_error::ms#0 ] zp ZP_WORD:125 [ mul8u_error::mn#0 ] zp ZP_WORD:127 [ mul8u_error::mf#0 ] -Uplifting [mul8s_error] best 288217 combination reg byte x [ mul8s_error::a#0 ] zp ZP_BYTE:78 [ mul8s_error::b#0 ] zp ZP_WORD:79 [ mul8s_error::ms#0 ] zp ZP_WORD:81 [ mul8s_error::mn#0 ] zp ZP_WORD:83 [ mul8s_error::mf#0 ] -Uplifting [print_ln] best 288217 combination -Uplifting [main] best 288217 combination -Uplifting [mulf_init_asm] best 288217 combination +Uplifting [print_word] best 288294 combination zp ZP_WORD:12 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [mulf8u_prepared] best 288285 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] zp ZP_WORD:97 [ mulf8u_prepared::return#3 ] zp ZP_WORD:129 [ mulf8u_prepared::return#2 ] zp ZP_WORD:103 [ mulf8u_prepared::return#0 ] +Uplifting [print_sword] best 288285 combination zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] +Uplifting [print_sbyte] best 288273 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] +Uplifting [print_char] best 288252 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplifting [mulf8u_prepare] best 288243 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] +Uplifting [mul8u_error] best 288237 combination reg byte x [ mul8u_error::a#0 ] zp ZP_BYTE:122 [ mul8u_error::b#0 ] zp ZP_WORD:123 [ mul8u_error::ms#0 ] zp ZP_WORD:125 [ mul8u_error::mn#0 ] zp ZP_WORD:127 [ mul8u_error::mf#0 ] +Uplifting [mul8s_error] best 288231 combination reg byte x [ mul8s_error::a#0 ] zp ZP_BYTE:78 [ mul8s_error::b#0 ] zp ZP_WORD:79 [ mul8s_error::ms#0 ] zp ZP_WORD:81 [ mul8s_error::mn#0 ] zp ZP_WORD:83 [ mul8s_error::mf#0 ] +Uplifting [print_ln] best 288231 combination +Uplifting [main] best 288231 combination +Uplifting [mulf_init_asm] best 288231 combination Attempting to uplift remaining variables inzp ZP_BYTE:61 [ muls8s::a#0 ] -Uplifting [muls8s] best 288217 combination zp ZP_BYTE:61 [ muls8s::a#0 ] +Uplifting [muls8s] best 288231 combination zp ZP_BYTE:61 [ muls8s::a#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] -Uplifting [mul8s_compare] best 288217 combination zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] +Uplifting [mul8s_compare] best 288231 combination zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Uplifting [mul8u_compare] best 288217 combination zp ZP_BYTE:36 [ mul8u_compare::b#10 mul8u_compare::b#1 ] +Uplifting [mul8u_compare] best 288231 combination zp ZP_BYTE:36 [ mul8u_compare::b#10 mul8u_compare::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:105 [ muls8u::a#0 ] -Uplifting [muls8u] best 288217 combination zp ZP_BYTE:105 [ muls8u::a#0 ] +Uplifting [muls8u] best 288231 combination zp ZP_BYTE:105 [ muls8u::a#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] -Uplifting [mul8s_compare] best 288217 combination zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] +Uplifting [mul8s_compare] best 288231 combination zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ mul8u_compare::a#7 mul8u_compare::a#1 ] -Uplifting [mul8u_compare] best 288217 combination zp ZP_BYTE:35 [ mul8u_compare::a#7 mul8u_compare::a#1 ] +Uplifting [mul8u_compare] best 288231 combination zp ZP_BYTE:35 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:50 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 288217 combination zp ZP_BYTE:50 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 288231 combination zp ZP_BYTE:50 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:53 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 288077 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 288091 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:58 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 288077 combination zp ZP_BYTE:58 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 288091 combination zp ZP_BYTE:58 [ mulf_init::dir#2 mulf_init::dir#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ mul8s::a#0 ] -Uplifting [mul8s] best 288077 combination zp ZP_BYTE:73 [ mul8s::a#0 ] +Uplifting [mul8s] best 288091 combination zp ZP_BYTE:73 [ mul8s::a#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:91 [ mul8s::$13 ] -Uplifting [mul8s] best 288071 combination reg byte a [ mul8s::$13 ] +Uplifting [mul8s] best 288085 combination reg byte a [ mul8s::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:92 [ mul8s::$17 ] -Uplifting [mul8s] best 288065 combination reg byte a [ mul8s::$17 ] +Uplifting [mul8s] best 288079 combination reg byte a [ mul8s::$17 ] Attempting to uplift remaining variables inzp ZP_BYTE:78 [ mul8s_error::b#0 ] -Uplifting [mul8s_error] best 288065 combination zp ZP_BYTE:78 [ mul8s_error::b#0 ] +Uplifting [mul8s_error] best 288079 combination zp ZP_BYTE:78 [ mul8s_error::b#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:94 [ mulf8s_prepared::b#0 ] -Uplifting [mulf8s_prepared] best 288065 combination zp ZP_BYTE:94 [ mulf8s_prepared::b#0 ] +Uplifting [mulf8s_prepared] best 288079 combination zp ZP_BYTE:94 [ mulf8s_prepared::b#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:122 [ mul8u_error::b#0 ] -Uplifting [mul8u_error] best 288065 combination zp ZP_BYTE:122 [ mul8u_error::b#0 ] +Uplifting [mul8u_error] best 288079 combination zp ZP_BYTE:122 [ mul8u_error::b#0 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] ] with [ zp ZP_BYTE:61 [ muls8s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 ] ] with [ zp ZP_BYTE:73 [ mul8s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] ] with [ zp ZP_BYTE:78 [ mul8s_error::b#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] ] with [ zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:79 [ mul8s_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] ] with [ zp ZP_WORD:12 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:79 [ mul8s_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] ] with [ zp ZP_WORD:75 [ mul8s_compare::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 ] ] with [ zp ZP_WORD:87 [ mul8u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:23 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:117 [ mul8u::return#3 ] ] - score: 1 @@ -7935,23 +7972,23 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ mul8u_co Coalescing zero page register with common assignment [ zp ZP_WORD:113 [ mulf8u::return#2 ] ] with [ zp ZP_WORD:115 [ mul8u_compare::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:113 [ mulf8u::return#2 mul8u_compare::mf#0 ] ] with [ zp ZP_WORD:131 [ mulf8u::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:119 [ mul8u_compare::mn#0 ] ] with [ zp ZP_WORD:125 [ mul8u_error::mn#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 ] ] with [ zp ZP_WORD:43 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] with [ zp ZP_WORD:65 [ mul8s_compare::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 ] ] with [ zp ZP_WORD:109 [ mul8u_compare::ms#0 mul8u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 ] ] with [ zp ZP_WORD:43 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] with [ zp ZP_WORD:65 [ mul8s_compare::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 ] ] with [ zp ZP_WORD:109 [ mul8u_compare::ms#0 mul8u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 ] ] with [ zp ZP_WORD:23 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp ZP_WORD:81 [ mul8s_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 ] ] with [ zp ZP_WORD:69 [ mulf8s::return#2 mul8s_compare::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 ] ] with [ zp ZP_WORD:103 [ mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:113 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 ] ] with [ zp ZP_WORD:127 [ mul8u_error::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 ] ] with [ zp ZP_WORD:32 [ muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 muls8s::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 muls8s::return#2 ] ] with [ zp ZP_WORD:39 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 ] ] with [ zp ZP_WORD:32 [ muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 muls8s::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 muls8s::return#2 ] ] with [ zp ZP_WORD:39 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_error::mn#0 ] ] with [ zp ZP_WORD:119 [ mul8u_compare::mn#0 mul8u_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] with [ zp ZP_WORD:83 [ mul8s_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 ] ] with [ zp ZP_WORD:113 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ] - score: 1 Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_str::str#16 print_str::str#18 print_str::str#0 ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] -Allocated (was zp ZP_WORD:15) zp ZP_WORD:10 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#187 print_char_cursor#188 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] +Allocated (was zp ZP_WORD:14) zp ZP_WORD:10 [ print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#190 print_char_cursor#191 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#32 print_char_cursor#1 print_char_cursor#227 ] Allocated (was zp ZP_WORD:18) zp ZP_WORD:12 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_error::mn#0 mul8u_compare::mn#0 mul8u_error::mn#0 ] Allocated (was zp ZP_WORD:25) zp ZP_WORD:14 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] Allocated (was zp ZP_WORD:27) zp ZP_WORD:16 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] @@ -7999,7 +8036,7 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [333] phi from main to print_cls [phi:main->print_cls] + //SEG12 [335] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -8008,7 +8045,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call mulf_init - //SEG16 [304] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [306] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -8024,7 +8061,7 @@ main: { //SEG21 main::@3 b3: //SEG22 [11] call mulf_tables_cmp - //SEG23 [277] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG23 [279] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] mulf_tables_cmp_from_b3: jsr mulf_tables_cmp //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -8033,7 +8070,7 @@ main: { //SEG25 main::@4 b4: //SEG26 [13] call mul8u_compare - //SEG27 [199] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG27 [201] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] mul8u_compare_from_b4: jsr mul8u_compare //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -8098,7 +8135,7 @@ mul8s_compare: { //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b //SEG53 [27] call mulf8s - //SEG54 [156] phi from mul8s_compare::@10 to mulf8s [phi:mul8s_compare::@10->mulf8s] + //SEG54 [158] phi from mul8s_compare::@10 to mulf8s [phi:mul8s_compare::@10->mulf8s] mulf8s_from_b10: jsr mulf8s //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 @@ -8206,7 +8243,7 @@ mul8s_compare: { jmp b9 //SEG96 mul8s_compare::@9 b9: - //SEG97 [53] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG97 [53] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -8214,7 +8251,7 @@ mul8s_compare: { //SEG98 [54] call print_str //SEG99 [62] phi from mul8s_compare::@9 to print_str [phi:mul8s_compare::@9->print_str] print_str_from_b9: - //SEG100 [62] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#187 [phi:mul8s_compare::@9->print_str#0] -- register_copy + //SEG100 [62] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#190 [phi:mul8s_compare::@9->print_str#0] -- register_copy //SEG101 [62] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@9->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b13: - //SEG106 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@13->print_ln#0] -- register_copy + //SEG106 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@13->print_ln#0] -- register_copy //SEG107 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@13->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -8253,7 +8290,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG113 [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG113 [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -8276,7 +8313,7 @@ print_str: { //SEG117 [63] 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: - //SEG118 [63] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG118 [63] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG119 [63] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 //SEG120 print_str::@1 @@ -8293,12 +8330,12 @@ print_str: { rts //SEG124 print_str::@2 b2: - //SEG125 [66] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 + //SEG125 [66] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG126 [67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG126 [67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -8317,7 +8354,7 @@ mul8s_error: { .label ms = 8 .label mn = $c .label mf = $10 - //SEG129 [69] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG129 [69] (byte*~) print_char_cursor#191 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -8325,7 +8362,7 @@ mul8s_error: { //SEG130 [70] call print_str //SEG131 [62] phi from mul8s_error to print_str [phi:mul8s_error->print_str] print_str_from_mul8s_error: - //SEG132 [62] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#188 [phi:mul8s_error->print_str#0] -- register_copy + //SEG132 [62] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#191 [phi:mul8s_error->print_str#0] -- register_copy //SEG133 [62] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 lda #print_sbyte] + //SEG137 [121] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] print_sbyte_from_b1: - //SEG138 [119] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy + //SEG138 [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy jsr print_sbyte //SEG139 [73] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] b2_from_b1: @@ -8349,7 +8386,7 @@ mul8s_error: { //SEG141 [74] call print_str //SEG142 [62] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] print_str_from_b2: - //SEG143 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy + //SEG143 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@2->print_str#0] -- register_copy //SEG144 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_sbyte] + //SEG148 [121] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] print_sbyte_from_b3: - //SEG149 [119] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy + //SEG149 [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy jsr print_sbyte //SEG150 [77] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] b4_from_b3: @@ -8374,7 +8411,7 @@ mul8s_error: { //SEG152 [78] call print_str //SEG153 [62] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] print_str_from_b4: - //SEG154 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy + //SEG154 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@4->print_str#0] -- register_copy //SEG155 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b6: - //SEG165 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy + //SEG165 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@6->print_str#0] -- register_copy //SEG166 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b8: - //SEG176 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy + //SEG176 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@8->print_str#0] -- register_copy //SEG177 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b10: - //SEG187 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy + //SEG187 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8s_error::@10->print_ln#0] -- register_copy //SEG188 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -8469,25 +8506,56 @@ mul8s_error: { // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - //SEG192 [93] if((signed word) print_sword::w#4>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG192 [93] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG193 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG194 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG193 [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG194 print_sword::@3 + b3: //SEG195 [95] call print_char - //SEG196 [115] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG197 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG198 [115] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG196 [103] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG197 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG198 [103] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG199 [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG200 [96] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#4 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG201 print_sword::@2 + b2: + //SEG202 [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 + //SEG203 [98] call print_word + //SEG204 [107] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG205 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG206 [107] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + jmp breturn + //SEG207 print_sword::@return + breturn: + //SEG208 [99] return + rts + //SEG209 [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG210 print_sword::@1 + b1: + //SEG211 [101] call print_char + //SEG212 [103] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG213 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG214 [103] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG199 print_sword::@3 - b3: - //SEG200 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG215 print_sword::@4 + b4: + //SEG216 [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -8495,170 +8563,151 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG201 [97] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG202 [97] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG203 [97] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG204 print_sword::@1 - b1: - //SEG205 [98] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 - //SEG206 [99] call print_word - //SEG207 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG208 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG209 [101] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG210 print_sword::@return - breturn: - //SEG211 [100] return - rts + jmp b2_from_b4 } -//SEG212 print_word -// Print a word as HEX -// print_word(word zeropage(8) w) -print_word: { - .label w = 8 - //SEG213 [102] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 - lda w+1 - tax - //SEG214 [103] call print_byte - //SEG215 [107] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG216 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy - //SEG217 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - //SEG218 print_word::@1 - b1: - //SEG219 [104] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 - lda w - tax - //SEG220 [105] call print_byte - //SEG221 [107] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG222 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG223 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - jmp breturn - //SEG224 print_word::@return - breturn: - //SEG225 [106] return - rts -} -//SEG226 print_byte -// Print a byte as HEX -// print_byte(byte register(X) b) -print_byte: { - //SEG227 [108] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 - txa - lsr - lsr - lsr - lsr - //SEG228 [109] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - //SEG229 [110] call print_char - //SEG230 [115] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - //SEG231 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy - //SEG232 [115] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - //SEG233 print_byte::@1 - b1: - //SEG234 [111] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 - lda #$f - axs #0 - //SEG235 [112] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx - lda print_hextab,x - //SEG236 [113] call print_char - //SEG237 [115] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - //SEG238 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG239 [115] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - //SEG240 print_byte::@return - breturn: - //SEG241 [114] return - rts -} -//SEG242 print_char +//SEG217 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG243 [116] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG218 [104] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG244 [117] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 + //SEG219 [105] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG245 print_char::@return + //SEG220 print_char::@return breturn: - //SEG246 [118] return + //SEG221 [106] return rts } -//SEG247 print_sbyte +//SEG222 print_word +// Print a word as HEX +// print_word(word zeropage(8) w) +print_word: { + .label w = 8 + //SEG223 [108] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 + lda w+1 + tax + //SEG224 [109] call print_byte + //SEG225 [113] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG226 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy + //SEG227 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + //SEG228 print_word::@1 + b1: + //SEG229 [110] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 + lda w + tax + //SEG230 [111] call print_byte + //SEG231 [113] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG232 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG233 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG234 print_word::@return + breturn: + //SEG235 [112] return + rts +} +//SEG236 print_byte +// Print a byte as HEX +// print_byte(byte register(X) b) +print_byte: { + //SEG237 [114] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa + lsr + lsr + lsr + lsr + //SEG238 [115] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + //SEG239 [116] call print_char + //SEG240 [103] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG241 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy + //SEG242 [103] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG243 print_byte::@1 + b1: + //SEG244 [117] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + lda #$f + axs #0 + //SEG245 [118] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x + //SEG246 [119] call print_char + //SEG247 [103] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG248 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG249 [103] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG250 print_byte::@return + breturn: + //SEG251 [120] return + rts +} +//SEG252 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte register(X) b) print_sbyte: { - //SEG248 [120] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + //SEG253 [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1_from_print_sbyte - //SEG249 [121] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG254 [123] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG250 print_sbyte::@3 + //SEG255 print_sbyte::@3 b3: - //SEG251 [122] call print_char - //SEG252 [115] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG256 [124] call print_char + //SEG257 [103] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG253 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG254 [115] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG258 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG259 [103] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG255 [123] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG260 [125] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG256 [123] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG261 [125] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG257 print_sbyte::@2 + //SEG262 print_sbyte::@2 b2: - //SEG258 [124] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 - //SEG259 [125] call print_byte - //SEG260 [107] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG263 [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 + //SEG264 [127] call print_byte + //SEG265 [113] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG261 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG262 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG266 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG267 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG263 print_sbyte::@return + //SEG268 print_sbyte::@return breturn: - //SEG264 [126] return + //SEG269 [128] return rts - //SEG265 [127] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG270 [129] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG266 print_sbyte::@1 + //SEG271 print_sbyte::@1 b1: - //SEG267 [128] call print_char - //SEG268 [115] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG272 [130] call print_char + //SEG273 [103] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG269 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG270 [115] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG274 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG275 [103] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG271 print_sbyte::@4 + //SEG276 print_sbyte::@4 b4: - //SEG272 [129] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx + //SEG277 [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -8666,118 +8715,118 @@ print_sbyte: { tax jmp b2_from_b4 } -//SEG273 mul8s +//SEG278 mul8s // Multiply of two signed bytes to a signed word // Fixes offsets introduced by using unsigned multiplication // mul8s(signed byte zeropage(2) a, signed byte register(Y) b) mul8s: { .label m = $c .label a = 2 - //SEG274 [130] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 + //SEG279 [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 ldx a - //SEG275 [131] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy + //SEG280 [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy tya - //SEG276 [132] call mul8u - //SEG277 [146] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG281 [134] call mul8u + //SEG282 [148] phi from mul8s to mul8u [phi:mul8s->mul8u] mul8u_from_mul8s: - //SEG278 [146] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy - //SEG279 [146] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- vwuz1=vbuaa + //SEG283 [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy + //SEG284 [148] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG280 [133] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG285 [135] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b5 - //SEG281 mul8s::@5 + //SEG286 mul8s::@5 b5: - //SEG282 [134] (word) mul8s::m#0 ← (word) mul8u::return#2 - //SEG283 [135] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 + //SEG287 [136] (word) mul8s::m#0 ← (word) mul8u::return#2 + //SEG288 [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1_from_b5 jmp b3 - //SEG284 mul8s::@3 + //SEG289 mul8s::@3 b3: - //SEG285 [136] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG290 [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG286 [137] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy + //SEG291 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG287 [138] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG292 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG288 [139] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1] + //SEG293 [141] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1] b1_from_b3: b1_from_b5: - //SEG289 [139] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy + //SEG294 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy jmp b1 - //SEG290 mul8s::@1 + //SEG295 mul8s::@1 b1: - //SEG291 [140] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 + //SEG296 [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2_from_b1 jmp b4 - //SEG292 mul8s::@4 + //SEG297 mul8s::@4 b4: - //SEG293 [141] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG298 [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG294 [142] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG299 [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc a - //SEG295 [143] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa + //SEG300 [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG296 [144] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG301 [146] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] b2_from_b1: b2_from_b4: - //SEG297 [144] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG302 [146] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy jmp b2 - //SEG298 mul8s::@2 + //SEG303 mul8s::@2 b2: jmp breturn - //SEG299 mul8s::@return + //SEG304 mul8s::@return breturn: - //SEG300 [145] return + //SEG305 [147] return rts } -//SEG301 mul8u +//SEG306 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $e .label res = $c .label return = $c - //SEG302 [147] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG307 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG303 [147] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG304 [147] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG308 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG309 [149] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res lda #0 sta res+1 - //SEG305 [147] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG310 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG306 mul8u::@1 + //SEG311 mul8u::@1 b1: - //SEG307 [148] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG312 [150] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG308 mul8u::@return + //SEG313 mul8u::@return breturn: - //SEG309 [149] return + //SEG314 [151] return rts - //SEG310 mul8u::@2 + //SEG315 mul8u::@2 b2: - //SEG311 [150] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG316 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG312 [151] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG317 [153] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG313 mul8u::@4 + //SEG318 mul8u::@4 b4: - //SEG314 [152] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG319 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -8785,59 +8834,59 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG315 [153] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG320 [155] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] b3_from_b2: b3_from_b4: - //SEG316 [153] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG321 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy jmp b3 - //SEG317 mul8u::@3 + //SEG322 mul8u::@3 b3: - //SEG318 [154] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG323 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG319 [155] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG324 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG320 [147] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG325 [149] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] b1_from_b3: - //SEG321 [147] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG322 [147] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG323 [147] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG326 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG327 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG328 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG324 mulf8s +//SEG329 mulf8s // Fast multiply two signed bytes to a word result // mulf8s(signed byte register(A) a, signed byte register(X) b) mulf8s: { .label return = $10 jmp mulf8s_prepare1 - //SEG325 mulf8s::mulf8s_prepare1 + //SEG330 mulf8s::mulf8s_prepare1 mulf8s_prepare1: - //SEG326 [157] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 - //SEG327 [158] call mulf8u_prepare - //SEG328 [183] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG331 [159] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 + //SEG332 [160] call mulf8u_prepare + //SEG333 [185] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG329 [183] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG334 [185] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b1 - //SEG330 mulf8s::@1 + //SEG335 mulf8s::@1 b1: - //SEG331 [159] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx + //SEG336 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx stx mulf8s_prepared.b - //SEG332 [160] call mulf8s_prepared + //SEG337 [162] call mulf8s_prepared jsr mulf8s_prepared jmp b2 - //SEG333 mulf8s::@2 + //SEG338 mulf8s::@2 b2: - //SEG334 [161] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG339 [163] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 jmp breturn - //SEG335 mulf8s::@return + //SEG340 mulf8s::@return breturn: - //SEG336 [162] return + //SEG341 [164] return rts } -//SEG337 mulf8s_prepared +//SEG342 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) // mulf8s_prepared(signed byte zeropage($24) b) @@ -8845,67 +8894,67 @@ mulf8s_prepared: { .label memA = $fd .label m = $10 .label b = $24 - //SEG338 [163] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 + //SEG343 [165] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 ldx b - //SEG339 [164] call mulf8u_prepared - //SEG340 [178] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG344 [166] call mulf8u_prepared + //SEG345 [180] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: - //SEG341 [178] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG346 [180] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG342 [165] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + //SEG347 [167] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 jmp b5 - //SEG343 mulf8s_prepared::@5 + //SEG348 mulf8s_prepared::@5 b5: - //SEG344 [166] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - //SEG345 [167] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG349 [168] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + //SEG350 [169] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1_from_b5 jmp b3 - //SEG346 mulf8s_prepared::@3 + //SEG351 mulf8s_prepared::@3 b3: - //SEG347 [168] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG352 [170] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG348 [169] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG353 [171] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG349 [170] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG354 [172] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG350 [171] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] + //SEG355 [173] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] b1_from_b3: b1_from_b5: - //SEG351 [171] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy + //SEG356 [173] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG352 mulf8s_prepared::@1 + //SEG357 mulf8s_prepared::@1 b1: - //SEG353 [172] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG358 [174] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG354 mulf8s_prepared::@4 + //SEG359 mulf8s_prepared::@4 b4: - //SEG355 [173] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG360 [175] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG356 [174] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG361 [176] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG357 [175] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG362 [177] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG358 [176] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG363 [178] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG359 [176] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG364 [178] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG360 mulf8s_prepared::@2 + //SEG365 mulf8s_prepared::@2 b2: jmp breturn - //SEG361 mulf8s_prepared::@return + //SEG366 mulf8s_prepared::@return breturn: - //SEG362 [177] return + //SEG367 [179] return rts } -//SEG363 mulf8u_prepared +//SEG368 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) // mulf8u_prepared(byte register(X) b) @@ -8913,9 +8962,9 @@ mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = $10 - //SEG364 [179] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx + //SEG369 [181] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx stx memB - //SEG365 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG370 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -8928,25 +8977,25 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG366 [181] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG371 [183] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG367 mulf8u_prepared::@return + //SEG372 mulf8u_prepared::@return breturn: - //SEG368 [182] return + //SEG373 [184] return rts } -//SEG369 mulf8u_prepare +//SEG374 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte register(A) a) mulf8u_prepare: { .label memA = $fd - //SEG370 [184] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG375 [186] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG371 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG376 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -8954,12 +9003,12 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG372 mulf8u_prepare::@return + //SEG377 mulf8u_prepare::@return breturn: - //SEG373 [186] return + //SEG378 [188] return rts } -//SEG374 muls8s +//SEG379 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction // muls8s(signed byte zeropage(2) a, signed byte register(X) b) @@ -8967,34 +9016,34 @@ muls8s: { .label m = 8 .label return = 8 .label a = 2 - //SEG375 [187] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 -- vbsz1_lt_0_then_la1 + //SEG380 [189] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 -- vbsz1_lt_0_then_la1 lda a bmi b4_from_muls8s jmp b2 - //SEG376 muls8s::@2 + //SEG381 muls8s::@2 b2: - //SEG377 [188] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 + //SEG382 [190] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b1_from_b2 - //SEG378 [189] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3] + //SEG383 [191] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3] b3_from_b2: - //SEG379 [189] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#0] -- vbsyy=vbsc1 + //SEG384 [191] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#0] -- vbsyy=vbsc1 ldy #0 - //SEG380 [189] phi (signed word) muls8s::m#3 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vwsz1=vbsc1 + //SEG385 [191] phi (signed word) muls8s::m#3 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vwsz1=vbsc1 lda #0 sta m lda #0 sta m+1 jmp b3 - //SEG381 [189] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG386 [191] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] b3_from_b3: - //SEG382 [189] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG383 [189] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG387 [191] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG388 [191] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy jmp b3 - //SEG384 muls8s::@3 + //SEG389 muls8s::@3 b3: - //SEG385 [190] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx + //SEG390 [192] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx txa sta $fe ora #$7f @@ -9009,49 +9058,49 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG386 [191] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy + //SEG391 [193] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy iny - //SEG387 [192] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 + //SEG392 [194] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b3_from_b3 - //SEG388 [193] phi from muls8s::@3 muls8s::@4 to muls8s::@1 [phi:muls8s::@3/muls8s::@4->muls8s::@1] + //SEG393 [195] phi from muls8s::@3 muls8s::@4 to muls8s::@1 [phi:muls8s::@3/muls8s::@4->muls8s::@1] b1_from_b3: b1_from_b4: - //SEG389 [193] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@4->muls8s::@1#0] -- register_copy + //SEG394 [195] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@4->muls8s::@1#0] -- register_copy jmp b1 - //SEG390 [193] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1] + //SEG395 [195] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1] b1_from_b2: - //SEG391 [193] phi (signed word) muls8s::return#0 = (signed byte) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vbsc1 + //SEG396 [195] phi (signed word) muls8s::return#0 = (signed byte) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vbsc1 lda #0 sta return lda #0 sta return+1 jmp b1 - //SEG392 muls8s::@1 + //SEG397 muls8s::@1 b1: jmp breturn - //SEG393 muls8s::@return + //SEG398 muls8s::@return breturn: - //SEG394 [194] return + //SEG399 [196] return rts - //SEG395 [195] phi from muls8s to muls8s::@4 [phi:muls8s->muls8s::@4] + //SEG400 [197] phi from muls8s to muls8s::@4 [phi:muls8s->muls8s::@4] b4_from_muls8s: - //SEG396 [195] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@4#0] -- vbsyy=vbsc1 + //SEG401 [197] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@4#0] -- vbsyy=vbsc1 ldy #0 - //SEG397 [195] phi (signed word) muls8s::m#5 = (signed byte) 0 [phi:muls8s->muls8s::@4#1] -- vwsz1=vbsc1 + //SEG402 [197] phi (signed word) muls8s::m#5 = (signed byte) 0 [phi:muls8s->muls8s::@4#1] -- vwsz1=vbsc1 lda #0 sta m lda #0 sta m+1 jmp b4 - //SEG398 [195] phi from muls8s::@4 to muls8s::@4 [phi:muls8s::@4->muls8s::@4] + //SEG403 [197] phi from muls8s::@4 to muls8s::@4 [phi:muls8s::@4->muls8s::@4] b4_from_b4: - //SEG399 [195] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@4->muls8s::@4#0] -- register_copy - //SEG400 [195] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@4->muls8s::@4#1] -- register_copy + //SEG404 [197] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@4->muls8s::@4#0] -- register_copy + //SEG405 [197] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@4->muls8s::@4#1] -- register_copy jmp b4 - //SEG401 muls8s::@4 + //SEG406 muls8s::@4 b4: - //SEG402 [196] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx + //SEG407 [198] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx txa sta $fe ora #$7f @@ -9066,14 +9115,14 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG403 [197] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy + //SEG408 [199] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy dey - //SEG404 [198] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsyy_neq_vbsz1_then_la1 + //SEG409 [200] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b4_from_b4 jmp b1_from_b4 } -//SEG405 mul8u_compare +//SEG410 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { .label ms = 8 @@ -9081,70 +9130,70 @@ mul8u_compare: { .label mn = $c .label b = $13 .label a = $12 - //SEG406 [200] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG411 [202] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] b1_from_mul8u_compare: - //SEG407 [200] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG412 [202] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a jmp b1 - //SEG408 [200] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1] + //SEG413 [202] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1] b1_from_b8: - //SEG409 [200] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy + //SEG414 [202] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy jmp b1 - //SEG410 mul8u_compare::@1 + //SEG415 mul8u_compare::@1 b1: - //SEG411 [201] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG416 [203] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] b2_from_b1: - //SEG412 [201] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG417 [203] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b jmp b2 - //SEG413 [201] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG418 [203] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] b2_from_b5: - //SEG414 [201] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG419 [203] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy jmp b2 - //SEG415 mul8u_compare::@2 + //SEG420 mul8u_compare::@2 b2: - //SEG416 [202] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - //SEG417 [203] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG421 [204] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + //SEG422 [205] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG418 [204] call muls8u + //SEG423 [206] call muls8u jsr muls8u - //SEG419 [205] (word) muls8u::return#2 ← (word) muls8u::return#0 + //SEG424 [207] (word) muls8u::return#2 ← (word) muls8u::return#0 jmp b10 - //SEG420 mul8u_compare::@10 + //SEG425 mul8u_compare::@10 b10: - //SEG421 [206] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - //SEG422 [207] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 + //SEG426 [208] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + //SEG427 [209] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 lda a - //SEG423 [208] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG428 [210] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG424 [209] call mulf8u + //SEG429 [211] call mulf8u jsr mulf8u - //SEG425 [210] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + //SEG430 [212] (word) mulf8u::return#2 ← (word) mulf8u::return#0 jmp b11 - //SEG426 mul8u_compare::@11 + //SEG431 mul8u_compare::@11 b11: - //SEG427 [211] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - //SEG428 [212] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG432 [213] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + //SEG433 [214] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG429 [213] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 + //SEG434 [215] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 lda b - //SEG430 [214] call mul8u - //SEG431 [146] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u] + //SEG435 [216] call mul8u + //SEG436 [148] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u] mul8u_from_b11: - //SEG432 [146] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy - //SEG433 [146] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- vwuz1=vbuaa + //SEG437 [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy + //SEG438 [148] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG434 [215] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG439 [217] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b12 - //SEG435 mul8u_compare::@12 + //SEG440 mul8u_compare::@12 b12: - //SEG436 [216] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - //SEG437 [217] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG441 [218] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + //SEG442 [219] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -9152,24 +9201,24 @@ mul8u_compare: { cmp mf+1 beq b3_from_b12 !: - //SEG438 [218] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6] + //SEG443 [220] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6] b6_from_b12: jmp b6 - //SEG439 mul8u_compare::@6 + //SEG444 mul8u_compare::@6 b6: - //SEG440 [219] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG445 [221] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] b3_from_b6: - //SEG441 [219] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG446 [221] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG442 [219] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3] + //SEG447 [221] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3] b3_from_b12: - //SEG443 [219] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG448 [221] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 - //SEG444 mul8u_compare::@3 + //SEG449 mul8u_compare::@3 b3: - //SEG445 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 + //SEG450 [222] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -9177,278 +9226,278 @@ mul8u_compare: { cmp mn+1 beq b14_from_b3 !: - //SEG446 [222] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG451 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] b4_from_b3: - //SEG447 [222] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 + //SEG452 [224] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG448 [221] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14] + //SEG453 [223] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14] b14_from_b3: jmp b14 - //SEG449 mul8u_compare::@14 + //SEG454 mul8u_compare::@14 b14: - //SEG450 [222] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4] + //SEG455 [224] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4] b4_from_b14: - //SEG451 [222] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy + //SEG456 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy jmp b4 - //SEG452 mul8u_compare::@4 + //SEG457 mul8u_compare::@4 b4: - //SEG453 [223] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG458 [225] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b7 - //SEG454 mul8u_compare::@7 + //SEG459 mul8u_compare::@7 b7: - //SEG455 [224] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG460 [226] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG456 [225] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG461 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG457 [226] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - //SEG458 [227] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - //SEG459 [228] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - //SEG460 [229] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - //SEG461 [230] call mul8u_error - //SEG462 [240] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error] + //SEG462 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + //SEG463 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + //SEG464 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + //SEG465 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + //SEG466 [232] call mul8u_error + //SEG467 [242] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error] mul8u_error_from_b7: jsr mul8u_error jmp breturn - //SEG463 mul8u_compare::@return + //SEG468 mul8u_compare::@return breturn: - //SEG464 [231] return + //SEG469 [233] return rts - //SEG465 mul8u_compare::@5 + //SEG470 mul8u_compare::@5 b5: - //SEG466 [232] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG471 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG467 [233] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG472 [235] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2_from_b5 jmp b8 - //SEG468 mul8u_compare::@8 + //SEG473 mul8u_compare::@8 b8: - //SEG469 [234] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG474 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG470 [235] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG475 [237] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1_from_b8 - //SEG471 [236] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9] + //SEG476 [238] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9] b9_from_b8: jmp b9 - //SEG472 mul8u_compare::@9 + //SEG477 mul8u_compare::@9 b9: - //SEG473 [237] call print_str - //SEG474 [62] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str] + //SEG478 [239] call print_str + //SEG479 [62] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str] print_str_from_b9: - //SEG475 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@9->print_str#0] -- register_copy - //SEG476 [62] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 + //SEG480 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#32 [phi:mul8u_compare::@9->print_str#0] -- register_copy + //SEG481 [62] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG477 [238] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13] + //SEG482 [240] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13] b13_from_b9: jmp b13 - //SEG478 mul8u_compare::@13 + //SEG483 mul8u_compare::@13 b13: - //SEG479 [239] call print_ln - //SEG480 [57] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln] + //SEG484 [241] call print_ln + //SEG485 [57] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln] print_ln_from_b13: - //SEG481 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@13->print_ln#0] -- register_copy - //SEG482 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@13->print_ln#1] -- register_copy + //SEG486 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy + //SEG487 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@13->print_ln#1] -- register_copy jsr print_ln jmp breturn str: .text "multiply results match!@" } -//SEG483 mul8u_error +//SEG488 mul8u_error // mul8u_error(byte register(X) a, byte zeropage($13) b, word zeropage(8) ms, word zeropage($c) mn, word zeropage($10) mf) mul8u_error: { .label b = $13 .label ms = 8 .label mn = $c .label mf = $10 - //SEG484 [241] call print_str - //SEG485 [62] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG489 [243] call print_str + //SEG490 [62] phi from mul8u_error to print_str [phi:mul8u_error->print_str] print_str_from_mul8u_error: - //SEG486 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG487 [62] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG491 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#32 [phi:mul8u_error->print_str#0] -- register_copy + //SEG492 [62] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG488 mul8u_error::@1 + //SEG493 mul8u_error::@1 b1: - //SEG489 [242] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - //SEG490 [243] call print_byte - //SEG491 [107] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG494 [244] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + //SEG495 [245] call print_byte + //SEG496 [113] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] print_byte_from_b1: - //SEG492 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG493 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG497 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG498 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG494 [244] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG499 [246] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] b2_from_b1: jmp b2 - //SEG495 mul8u_error::@2 + //SEG500 mul8u_error::@2 b2: - //SEG496 [245] call print_str - //SEG497 [62] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG501 [247] call print_str + //SEG502 [62] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] print_str_from_b2: - //SEG498 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG499 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG503 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG504 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG500 mul8u_error::@3 + //SEG505 mul8u_error::@3 b3: - //SEG501 [246] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 + //SEG506 [248] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 ldx b - //SEG502 [247] call print_byte - //SEG503 [107] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG507 [249] call print_byte + //SEG508 [113] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] print_byte_from_b3: - //SEG504 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG505 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG509 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG510 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG506 [248] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG511 [250] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] b4_from_b3: jmp b4 - //SEG507 mul8u_error::@4 + //SEG512 mul8u_error::@4 b4: - //SEG508 [249] call print_str - //SEG509 [62] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG513 [251] call print_str + //SEG514 [62] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] print_str_from_b4: - //SEG510 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG511 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG515 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG516 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG512 mul8u_error::@5 + //SEG517 mul8u_error::@5 b5: - //SEG513 [250] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - //SEG514 [251] call print_word - //SEG515 [101] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG518 [252] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + //SEG519 [253] call print_word + //SEG520 [107] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] print_word_from_b5: - //SEG516 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG517 [101] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG521 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG522 [107] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG518 [252] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG523 [254] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] b6_from_b5: jmp b6 - //SEG519 mul8u_error::@6 + //SEG524 mul8u_error::@6 b6: - //SEG520 [253] call print_str - //SEG521 [62] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG525 [255] call print_str + //SEG526 [62] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] print_str_from_b6: - //SEG522 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG523 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG527 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG528 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG524 mul8u_error::@7 + //SEG529 mul8u_error::@7 b7: - //SEG525 [254] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG530 [256] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG526 [255] call print_word - //SEG527 [101] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG531 [257] call print_word + //SEG532 [107] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] print_word_from_b7: - //SEG528 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG529 [101] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG533 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG534 [107] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG530 [256] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG535 [258] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] b8_from_b7: jmp b8 - //SEG531 mul8u_error::@8 + //SEG536 mul8u_error::@8 b8: - //SEG532 [257] call print_str - //SEG533 [62] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG537 [259] call print_str + //SEG538 [62] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] print_str_from_b8: - //SEG534 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG535 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG539 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG540 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG536 mul8u_error::@9 + //SEG541 mul8u_error::@9 b9: - //SEG537 [258] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG542 [260] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG538 [259] call print_word - //SEG539 [101] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG543 [261] call print_word + //SEG544 [107] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] print_word_from_b9: - //SEG540 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG541 [101] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG545 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG546 [107] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG542 [260] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG547 [262] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] b10_from_b9: jmp b10 - //SEG543 mul8u_error::@10 + //SEG548 mul8u_error::@10 b10: - //SEG544 [261] call print_ln - //SEG545 [57] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG549 [263] call print_ln + //SEG550 [57] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] print_ln_from_b10: - //SEG546 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG547 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG551 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG552 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG548 mul8u_error::@return + //SEG553 mul8u_error::@return breturn: - //SEG549 [262] return + //SEG554 [264] return rts str: .text "multiply mismatch @" } -//SEG550 mulf8u +//SEG555 mulf8u // Fast multiply two unsigned bytes to a word result // mulf8u(byte register(A) a, byte register(X) b) mulf8u: { .label return = $10 - //SEG551 [263] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - //SEG552 [264] call mulf8u_prepare - //SEG553 [183] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG556 [265] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + //SEG557 [266] call mulf8u_prepare + //SEG558 [185] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] mulf8u_prepare_from_mulf8u: - //SEG554 [183] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG559 [185] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b1 - //SEG555 mulf8u::@1 + //SEG560 mulf8u::@1 b1: - //SEG556 [265] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - //SEG557 [266] call mulf8u_prepared - //SEG558 [178] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared] + //SEG561 [267] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + //SEG562 [268] call mulf8u_prepared + //SEG563 [180] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared] mulf8u_prepared_from_b1: - //SEG559 [178] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy + //SEG564 [180] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG560 [267] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG565 [269] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 jmp b2 - //SEG561 mulf8u::@2 + //SEG566 mulf8u::@2 b2: - //SEG562 [268] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + //SEG567 [270] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 jmp breturn - //SEG563 mulf8u::@return + //SEG568 mulf8u::@return breturn: - //SEG564 [269] return + //SEG569 [271] return rts } -//SEG565 muls8u +//SEG570 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition // muls8u(byte zeropage($12) a, byte register(X) b) @@ -9456,28 +9505,28 @@ muls8u: { .label return = 8 .label m = 8 .label a = $12 - //SEG566 [270] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + //SEG571 [272] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b1_from_muls8u - //SEG567 [271] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG572 [273] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] b2_from_muls8u: - //SEG568 [271] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 + //SEG573 [273] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG569 [271] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG574 [273] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b2 - //SEG570 [271] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG575 [273] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //SEG571 [271] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG572 [271] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG576 [273] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG577 [273] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG573 muls8u::@2 + //SEG578 muls8u::@2 b2: - //SEG574 [272] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG579 [274] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -9485,148 +9534,148 @@ muls8u: { bcc !+ inc m+1 !: - //SEG575 [273] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy + //SEG580 [275] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy iny - //SEG576 [274] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 + //SEG581 [276] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2_from_b2 - //SEG577 [275] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG582 [277] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG578 [275] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG583 [277] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG579 [275] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG584 [277] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b1_from_muls8u: - //SEG580 [275] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG585 [277] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #0 sta return lda #0 sta return+1 jmp b1 - //SEG581 muls8u::@1 + //SEG586 muls8u::@1 b1: jmp breturn - //SEG582 muls8u::@return + //SEG587 muls8u::@return breturn: - //SEG583 [276] return + //SEG588 [278] return rts } -//SEG584 mulf_tables_cmp +//SEG589 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = 8 .label kc_sqr = $14 - //SEG585 [278] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG590 [280] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] b1_from_mulf_tables_cmp: - //SEG586 [278] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG591 [280] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG587 [278] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG592 [280] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG588 [278] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG593 [280] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] b1_from_b2: - //SEG589 [278] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG590 [278] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG594 [280] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG595 [280] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy jmp b1 - //SEG591 mulf_tables_cmp::@1 + //SEG596 mulf_tables_cmp::@1 b1: - //SEG592 [279] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG597 [281] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG593 mulf_tables_cmp::@3 + //SEG598 mulf_tables_cmp::@3 b3: - //SEG594 [280] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG599 [282] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG595 [281] call print_str - //SEG596 [62] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG600 [283] call print_str + //SEG601 [62] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] print_str_from_b3: - //SEG597 [62] phi (byte*) print_char_cursor#152 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG602 [62] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG598 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG603 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b5 - //SEG599 mulf_tables_cmp::@5 + //SEG604 mulf_tables_cmp::@5 b5: - //SEG600 [282] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - //SEG601 [283] call print_word - //SEG602 [101] phi from mulf_tables_cmp::@5 to print_word [phi:mulf_tables_cmp::@5->print_word] + //SEG605 [284] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + //SEG606 [285] call print_word + //SEG607 [107] phi from mulf_tables_cmp::@5 to print_word [phi:mulf_tables_cmp::@5->print_word] print_word_from_b5: - //SEG603 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@5->print_word#0] -- register_copy - //SEG604 [101] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@5->print_word#1] -- register_copy + //SEG608 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@5->print_word#0] -- register_copy + //SEG609 [107] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@5->print_word#1] -- register_copy jsr print_word - //SEG605 [284] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@6] + //SEG610 [286] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@6] b6_from_b5: jmp b6 - //SEG606 mulf_tables_cmp::@6 + //SEG611 mulf_tables_cmp::@6 b6: - //SEG607 [285] call print_str - //SEG608 [62] phi from mulf_tables_cmp::@6 to print_str [phi:mulf_tables_cmp::@6->print_str] + //SEG612 [287] call print_str + //SEG613 [62] phi from mulf_tables_cmp::@6 to print_str [phi:mulf_tables_cmp::@6->print_str] print_str_from_b6: - //SEG609 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@6->print_str#0] -- register_copy - //SEG610 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@6->print_str#1] -- pbuz1=pbuc1 + //SEG614 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@6->print_str#0] -- register_copy + //SEG615 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@6->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b7 - //SEG611 mulf_tables_cmp::@7 + //SEG616 mulf_tables_cmp::@7 b7: - //SEG612 [286] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG617 [288] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG613 [287] call print_word - //SEG614 [101] phi from mulf_tables_cmp::@7 to print_word [phi:mulf_tables_cmp::@7->print_word] + //SEG618 [289] call print_word + //SEG619 [107] phi from mulf_tables_cmp::@7 to print_word [phi:mulf_tables_cmp::@7->print_word] print_word_from_b7: - //SEG615 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@7->print_word#0] -- register_copy - //SEG616 [101] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@7->print_word#1] -- register_copy + //SEG620 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@7->print_word#0] -- register_copy + //SEG621 [107] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@7->print_word#1] -- register_copy jsr print_word - //SEG617 [288] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return] + //SEG622 [290] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return] breturn_from_b7: - //SEG618 [288] phi (byte*) print_line_cursor#10 = (byte*) 1024 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG623 [290] phi (byte*) print_line_cursor#10 = (byte*) 1024 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG619 [288] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy + //SEG624 [290] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy jmp breturn - //SEG620 mulf_tables_cmp::@return + //SEG625 mulf_tables_cmp::@return breturn: - //SEG621 [289] return + //SEG626 [291] return rts - //SEG622 mulf_tables_cmp::@2 + //SEG627 mulf_tables_cmp::@2 b2: - //SEG623 [290] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG628 [292] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG624 [291] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG629 [293] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG625 [292] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG630 [294] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1_from_b2 @@ -9635,64 +9684,64 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@4] + //SEG631 [295] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@4 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@4] b4_from_b2: jmp b4 - //SEG627 mulf_tables_cmp::@4 + //SEG632 mulf_tables_cmp::@4 b4: - //SEG628 [294] call print_str - //SEG629 [62] phi from mulf_tables_cmp::@4 to print_str [phi:mulf_tables_cmp::@4->print_str] + //SEG633 [296] call print_str + //SEG634 [62] phi from mulf_tables_cmp::@4 to print_str [phi:mulf_tables_cmp::@4->print_str] print_str_from_b4: - //SEG630 [62] phi (byte*) print_char_cursor#152 = (byte*) 1024 [phi:mulf_tables_cmp::@4->print_str#0] -- pbuz1=pbuc1 + //SEG635 [62] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@4->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG631 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@4->print_str#1] -- pbuz1=pbuc1 + //SEG636 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG632 [295] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@8 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@8] + //SEG637 [297] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@8 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@8] b8_from_b4: jmp b8 - //SEG633 mulf_tables_cmp::@8 + //SEG638 mulf_tables_cmp::@8 b8: - //SEG634 [296] call print_ln - //SEG635 [57] phi from mulf_tables_cmp::@8 to print_ln [phi:mulf_tables_cmp::@8->print_ln] + //SEG639 [298] call print_ln + //SEG640 [57] phi from mulf_tables_cmp::@8 to print_ln [phi:mulf_tables_cmp::@8->print_ln] print_ln_from_b8: - //SEG636 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_ln#0] -- register_copy - //SEG637 [57] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@8->print_ln#1] -- pbuz1=pbuc1 + //SEG641 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@8->print_ln#0] -- register_copy + //SEG642 [57] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@8->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b9 - //SEG638 mulf_tables_cmp::@9 + //SEG643 mulf_tables_cmp::@9 b9: - //SEG639 [297] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG644 [299] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG640 [288] phi from mulf_tables_cmp::@9 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return] + //SEG645 [290] phi from mulf_tables_cmp::@9 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return] breturn_from_b9: - //SEG641 [288] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#0] -- register_copy - //SEG642 [288] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#1] -- register_copy + //SEG646 [290] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#0] -- register_copy + //SEG647 [290] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#227 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG643 mulf_init_asm +//SEG648 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { // Ensure the ASM tables are not detected as unused by the optimizer .label mem = $ff - //SEG644 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG649 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -9731,25 +9780,25 @@ mulf_init_asm: { dey inx bne !- - //SEG645 [299] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG646 [300] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG647 [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG648 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem jmp breturn - //SEG649 mulf_init_asm::@return + //SEG654 mulf_init_asm::@return breturn: - //SEG650 [303] return + //SEG655 [305] return rts } -//SEG651 mulf_init +//SEG656 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = $18 @@ -9759,81 +9808,81 @@ mulf_init: { .label sqr2_hi = $1f .label sqr2_lo = $1d .label dir = $21 - //SEG652 [305] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG657 [307] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG653 [305] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG658 [307] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG654 [305] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG659 [307] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG655 [305] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG660 [307] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG656 [305] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG661 [307] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG657 [305] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG662 [307] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG658 [305] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG663 [307] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG659 [305] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG660 [305] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG661 [305] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG662 [305] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG663 [305] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG664 [307] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG665 [307] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG666 [307] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG667 [307] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG668 [307] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG664 mulf_init::@1 + //SEG669 mulf_init::@1 b1: - //SEG665 [306] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG670 [308] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG666 [307] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG671 [309] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG667 [308] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG672 [310] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b3 - //SEG668 mulf_init::@3 + //SEG673 mulf_init::@3 b3: - //SEG669 [309] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG674 [311] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG670 [310] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG675 [312] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG671 [311] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + //SEG676 [313] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] b2_from_b1: b2_from_b3: - //SEG672 [311] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - //SEG673 [311] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + //SEG677 [313] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + //SEG678 [313] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy jmp b2 - //SEG674 mulf_init::@2 + //SEG679 mulf_init::@2 b2: - //SEG675 [312] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG680 [314] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG676 [313] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa + //SEG681 [315] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG677 [314] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG682 [316] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG678 [315] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa + //SEG683 [317] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG679 [316] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG684 [318] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG680 [317] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG685 [319] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -9841,89 +9890,89 @@ mulf_init: { bcc !+ inc sqr+1 !: - //SEG681 [318] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG686 [320] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG682 [319] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG687 [321] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@4] + //SEG688 [322] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] b4_from_b2: - //SEG684 [320] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG689 [322] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG685 [320] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + //SEG690 [322] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG686 [320] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + //SEG691 [322] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG687 [320] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 + //SEG692 [322] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 ldx #-1 jmp b4 - //SEG688 [320] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + //SEG693 [322] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] b4_from_b5: - //SEG689 [320] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - //SEG690 [320] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - //SEG691 [320] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - //SEG692 [320] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + //SEG694 [322] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + //SEG695 [322] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + //SEG696 [322] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + //SEG697 [322] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy jmp b4 - //SEG693 mulf_init::@4 + //SEG698 mulf_init::@4 b4: - //SEG694 [321] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG699 [323] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG695 [322] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG700 [324] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG696 [323] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG701 [325] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG697 [324] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG702 [326] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG698 [325] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 + //SEG703 [327] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 cpx #0 bne b7_from_b4 - //SEG699 [327] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + //SEG704 [329] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] b5_from_b4: - //SEG700 [327] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + //SEG705 [329] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b5 - //SEG701 [326] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + //SEG706 [328] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] b7_from_b4: jmp b7 - //SEG702 mulf_init::@7 + //SEG707 mulf_init::@7 b7: - //SEG703 [327] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + //SEG708 [329] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] b5_from_b7: - //SEG704 [327] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + //SEG709 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy jmp b5 - //SEG705 mulf_init::@5 + //SEG710 mulf_init::@5 b5: - //SEG706 [328] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG711 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG707 [329] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG712 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4_from_b5 @@ -9931,49 +9980,49 @@ mulf_init: { cmp #print_cls::@1] + //SEG719 [336] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG715 [334] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG720 [336] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG716 [334] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG721 [336] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG717 [334] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG722 [336] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG718 print_cls::@1 + //SEG723 print_cls::@1 b1: - //SEG719 [335] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG724 [337] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG720 [336] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG725 [338] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG721 [337] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG726 [339] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -9981,12 +10030,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG722 print_cls::@return + //SEG727 print_cls::@return breturn: - //SEG723 [338] return + //SEG728 [340] return rts } -//SEG724 File Data +//SEG729 File Data print_hextab: .text "0123456789abcdef" // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // print_cls] + //SEG12 [335] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 main::@1 //SEG15 [7] call mulf_init - //SEG16 [304] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [306] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG18 main::@2 @@ -11044,12 +11097,12 @@ main: { //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG21 main::@3 //SEG22 [11] call mulf_tables_cmp - //SEG23 [277] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG23 [279] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] jsr mulf_tables_cmp //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG25 main::@4 //SEG26 [13] call mul8u_compare - //SEG27 [199] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG27 [201] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] jsr mul8u_compare //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] //SEG29 main::@5 @@ -11097,7 +11150,7 @@ mul8s_compare: { //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b //SEG53 [27] call mulf8s - //SEG54 [156] phi from mul8s_compare::@10 to mulf8s [phi:mul8s_compare::@10->mulf8s] + //SEG54 [158] phi from mul8s_compare::@10 to mulf8s [phi:mul8s_compare::@10->mulf8s] jsr mulf8s //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 //SEG56 mul8s_compare::@11 @@ -11179,14 +11232,14 @@ mul8s_compare: { cmp a bne b1 //SEG96 mul8s_compare::@9 - //SEG97 [53] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG97 [53] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG98 [54] call print_str //SEG99 [62] phi from mul8s_compare::@9 to print_str [phi:mul8s_compare::@9->print_str] - //SEG100 [62] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#187 [phi:mul8s_compare::@9->print_str#0] -- register_copy + //SEG100 [62] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#190 [phi:mul8s_compare::@9->print_str#0] -- register_copy //SEG101 [62] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@9->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - //SEG106 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@13->print_ln#0] -- register_copy + //SEG106 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@13->print_ln#0] -- register_copy //SEG107 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@13->print_ln#1] -- register_copy jsr print_ln rts @@ -11218,7 +11271,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG113 [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG113 [60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -11237,7 +11290,7 @@ print_ln: { print_str: { .label str = 6 //SEG117 [63] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG118 [63] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG118 [63] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG119 [63] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy //SEG120 print_str::@1 b1: @@ -11251,11 +11304,11 @@ print_str: { rts //SEG124 print_str::@2 b2: - //SEG125 [66] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 + //SEG125 [66] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG126 [67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 + //SEG126 [67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -11274,14 +11327,14 @@ mul8s_error: { .label ms = 8 .label mn = $c .label mf = $10 - //SEG129 [69] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG129 [69] (byte*~) print_char_cursor#191 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG130 [70] call print_str //SEG131 [62] phi from mul8s_error to print_str [phi:mul8s_error->print_str] - //SEG132 [62] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#188 [phi:mul8s_error->print_str#0] -- register_copy + //SEG132 [62] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#191 [phi:mul8s_error->print_str#0] -- register_copy //SEG133 [62] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 lda #print_sbyte] - //SEG138 [119] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy + //SEG137 [121] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte] + //SEG138 [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy jsr print_sbyte //SEG139 [73] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2] //SEG140 mul8s_error::@2 //SEG141 [74] call print_str //SEG142 [62] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] - //SEG143 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy + //SEG143 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@2->print_str#0] -- register_copy //SEG144 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_sbyte] - //SEG149 [119] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy + //SEG148 [121] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte] + //SEG149 [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy jsr print_sbyte //SEG150 [77] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4] //SEG151 mul8s_error::@4 //SEG152 [78] call print_str //SEG153 [62] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] - //SEG154 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy + //SEG154 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@4->print_str#0] -- register_copy //SEG155 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG165 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy + //SEG165 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@6->print_str#0] -- register_copy //SEG166 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG176 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy + //SEG176 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@8->print_str#0] -- register_copy //SEG177 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - //SEG187 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy + //SEG187 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8s_error::@10->print_ln#0] -- register_copy //SEG188 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy jsr print_ln //SEG189 mul8s_error::@return @@ -11388,19 +11441,41 @@ mul8s_error: { // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - //SEG192 [93] if((signed word) print_sword::w#4>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG192 [93] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG193 [94] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG194 print_sword::@2 + bmi b1 + //SEG193 [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG194 print_sword::@3 //SEG195 [95] call print_char - //SEG196 [115] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG197 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG198 [115] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG196 [103] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG197 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG198 [103] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG199 [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG200 [96] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#4 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG201 print_sword::@2 + b2: + //SEG202 [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 + //SEG203 [98] call print_word + //SEG204 [107] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + //SEG205 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy + //SEG206 [107] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + jsr print_word + //SEG207 print_sword::@return + //SEG208 [99] return + rts + //SEG209 [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG210 print_sword::@1 + b1: + //SEG211 [101] call print_char + //SEG212 [103] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG213 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG214 [103] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG199 print_sword::@3 - //SEG200 [96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 + //SEG215 print_sword::@4 + //SEG216 [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -11408,135 +11483,122 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG201 [97] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG202 [97] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG203 [97] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG204 print_sword::@1 - b1: - //SEG205 [98] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 - //SEG206 [99] call print_word - //SEG207 [101] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG208 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG209 [101] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - //SEG210 print_sword::@return - //SEG211 [100] return + jmp b2 +} +//SEG217 print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + //SEG218 [104] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + //SEG219 [105] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: + //SEG220 print_char::@return + //SEG221 [106] return rts } -//SEG212 print_word +//SEG222 print_word // Print a word as HEX // print_word(word zeropage(8) w) print_word: { .label w = 8 - //SEG213 [102] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 + //SEG223 [108] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG214 [103] call print_byte - //SEG215 [107] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG216 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy - //SEG217 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG224 [109] call print_byte + //SEG225 [113] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG226 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy + //SEG227 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG218 print_word::@1 - //SEG219 [104] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 + //SEG228 print_word::@1 + //SEG229 [110] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 lda w tax - //SEG220 [105] call print_byte - //SEG221 [107] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG222 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG223 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG230 [111] call print_byte + //SEG231 [113] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG232 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG233 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG224 print_word::@return - //SEG225 [106] return + //SEG234 print_word::@return + //SEG235 [112] return rts } -//SEG226 print_byte +//SEG236 print_byte // Print a byte as HEX // print_byte(byte register(X) b) print_byte: { - //SEG227 [108] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + //SEG237 [114] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG228 [109] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG238 [115] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG229 [110] call print_char - //SEG230 [115] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG231 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy - //SEG232 [115] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG239 [116] call print_char + //SEG240 [103] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG241 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy + //SEG242 [103] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG233 print_byte::@1 - //SEG234 [111] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + //SEG243 print_byte::@1 + //SEG244 [117] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - //SEG235 [112] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG245 [118] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x - //SEG236 [113] call print_char - //SEG237 [115] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG238 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG239 [115] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG246 [119] call print_char + //SEG247 [103] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG248 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG249 [103] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG240 print_byte::@return - //SEG241 [114] return + //SEG250 print_byte::@return + //SEG251 [120] return rts } -//SEG242 print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - //SEG243 [116] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - //SEG244 [117] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - //SEG245 print_char::@return - //SEG246 [118] return - rts -} -//SEG247 print_sbyte +//SEG252 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte register(X) b) print_sbyte: { - //SEG248 [120] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 + //SEG253 [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1 - //SEG249 [121] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG250 print_sbyte::@3 - //SEG251 [122] call print_char - //SEG252 [115] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG253 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG254 [115] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG254 [123] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG255 print_sbyte::@3 + //SEG256 [124] call print_char + //SEG257 [103] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG258 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG259 [103] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG255 [123] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] - //SEG256 [123] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy - //SEG257 print_sbyte::@2 + //SEG260 [125] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG261 [125] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG262 print_sbyte::@2 b2: - //SEG258 [124] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 - //SEG259 [125] call print_byte - //SEG260 [107] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG261 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG262 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG263 [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 + //SEG264 [127] call print_byte + //SEG265 [113] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG266 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG267 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG263 print_sbyte::@return - //SEG264 [126] return + //SEG268 print_sbyte::@return + //SEG269 [128] return rts - //SEG265 [127] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG266 print_sbyte::@1 + //SEG270 [129] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG271 print_sbyte::@1 b1: - //SEG267 [128] call print_char - //SEG268 [115] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG269 [115] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG270 [115] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG272 [130] call print_char + //SEG273 [103] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG274 [103] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG275 [103] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG271 print_sbyte::@4 - //SEG272 [129] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx + //SEG276 print_sbyte::@4 + //SEG277 [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -11544,96 +11606,96 @@ print_sbyte: { tax jmp b2 } -//SEG273 mul8s +//SEG278 mul8s // Multiply of two signed bytes to a signed word // Fixes offsets introduced by using unsigned multiplication // mul8s(signed byte zeropage(2) a, signed byte register(Y) b) mul8s: { .label m = $c .label a = 2 - //SEG274 [130] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 + //SEG279 [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 ldx a - //SEG275 [131] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy + //SEG280 [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy tya - //SEG276 [132] call mul8u - //SEG277 [146] phi from mul8s to mul8u [phi:mul8s->mul8u] - //SEG278 [146] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy - //SEG279 [146] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- vwuz1=vbuaa + //SEG281 [134] call mul8u + //SEG282 [148] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG283 [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy + //SEG284 [148] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG280 [133] (word) mul8u::return#2 ← (word) mul8u::res#2 - //SEG281 mul8s::@5 - //SEG282 [134] (word) mul8s::m#0 ← (word) mul8u::return#2 - //SEG283 [135] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 + //SEG285 [135] (word) mul8u::return#2 ← (word) mul8u::res#2 + //SEG286 mul8s::@5 + //SEG287 [136] (word) mul8s::m#0 ← (word) mul8u::return#2 + //SEG288 [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1 - //SEG284 mul8s::@3 - //SEG285 [136] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG289 mul8s::@3 + //SEG290 [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG286 [137] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy + //SEG291 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG287 [138] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG292 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG288 [139] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1] - //SEG289 [139] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy - //SEG290 mul8s::@1 + //SEG293 [141] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1] + //SEG294 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy + //SEG295 mul8s::@1 b1: - //SEG291 [140] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 + //SEG296 [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2 - //SEG292 mul8s::@4 - //SEG293 [141] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG297 mul8s::@4 + //SEG298 [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG294 [142] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG299 [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc a - //SEG295 [143] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa + //SEG300 [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG296 [144] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] - //SEG297 [144] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy - //SEG298 mul8s::@2 + //SEG301 [146] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG302 [146] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG303 mul8s::@2 b2: - //SEG299 mul8s::@return - //SEG300 [145] return + //SEG304 mul8s::@return + //SEG305 [147] return rts } -//SEG301 mul8u +//SEG306 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $e .label res = $c .label return = $c - //SEG302 [147] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG303 [147] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG304 [147] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG307 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG308 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG309 [149] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #0 sta res sta res+1 - //SEG305 [147] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG306 mul8u::@1 + //SEG310 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG311 mul8u::@1 b1: - //SEG307 [148] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG312 [150] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG308 mul8u::@return - //SEG309 [149] return + //SEG313 mul8u::@return + //SEG314 [151] return rts - //SEG310 mul8u::@2 + //SEG315 mul8u::@2 b2: - //SEG311 [150] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG316 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG312 [151] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 + //SEG317 [153] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG313 mul8u::@4 - //SEG314 [152] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG318 mul8u::@4 + //SEG319 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -11641,46 +11703,46 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG315 [153] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] - //SEG316 [153] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy - //SEG317 mul8u::@3 + //SEG320 [155] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3] + //SEG321 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy + //SEG322 mul8u::@3 b3: - //SEG318 [154] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 + //SEG323 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG319 [155] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG324 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG320 [147] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] - //SEG321 [147] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy - //SEG322 [147] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy - //SEG323 [147] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy + //SEG325 [149] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1] + //SEG326 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy + //SEG327 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy + //SEG328 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy jmp b1 } -//SEG324 mulf8s +//SEG329 mulf8s // Fast multiply two signed bytes to a word result // mulf8s(signed byte register(A) a, signed byte register(X) b) mulf8s: { .label return = $10 - //SEG325 mulf8s::mulf8s_prepare1 - //SEG326 [157] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 - //SEG327 [158] call mulf8u_prepare - //SEG328 [183] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] - //SEG329 [183] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG330 mulf8s::mulf8s_prepare1 + //SEG331 [159] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 + //SEG332 [160] call mulf8u_prepare + //SEG333 [185] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG334 [185] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare - //SEG330 mulf8s::@1 - //SEG331 [159] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx + //SEG335 mulf8s::@1 + //SEG336 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx stx mulf8s_prepared.b - //SEG332 [160] call mulf8s_prepared + //SEG337 [162] call mulf8s_prepared jsr mulf8s_prepared - //SEG333 mulf8s::@2 - //SEG334 [161] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 - //SEG335 mulf8s::@return - //SEG336 [162] return + //SEG338 mulf8s::@2 + //SEG339 [163] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG340 mulf8s::@return + //SEG341 [164] return rts } -//SEG337 mulf8s_prepared +//SEG342 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) // mulf8s_prepared(signed byte zeropage($24) b) @@ -11688,52 +11750,52 @@ mulf8s_prepared: { .label memA = $fd .label m = $10 .label b = $24 - //SEG338 [163] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 + //SEG343 [165] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 ldx b - //SEG339 [164] call mulf8u_prepared - //SEG340 [178] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] - //SEG341 [178] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG344 [166] call mulf8u_prepared + //SEG345 [180] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG346 [180] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG342 [165] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 - //SEG343 mulf8s_prepared::@5 - //SEG344 [166] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - //SEG345 [167] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG347 [167] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + //SEG348 mulf8s_prepared::@5 + //SEG349 [168] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + //SEG350 [169] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1 - //SEG346 mulf8s_prepared::@3 - //SEG347 [168] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG351 mulf8s_prepared::@3 + //SEG352 [170] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG348 [169] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG353 [171] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG349 [170] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG354 [172] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG350 [171] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] - //SEG351 [171] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy - //SEG352 mulf8s_prepared::@1 + //SEG355 [173] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1] + //SEG356 [173] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy + //SEG357 mulf8s_prepared::@1 b1: - //SEG353 [172] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG358 [174] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2 - //SEG354 mulf8s_prepared::@4 - //SEG355 [173] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG359 mulf8s_prepared::@4 + //SEG360 [175] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG356 [174] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG361 [176] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG357 [175] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG362 [177] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG358 [176] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] - //SEG359 [176] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy - //SEG360 mulf8s_prepared::@2 + //SEG363 [178] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG364 [178] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG365 mulf8s_prepared::@2 b2: - //SEG361 mulf8s_prepared::@return - //SEG362 [177] return + //SEG366 mulf8s_prepared::@return + //SEG367 [179] return rts } -//SEG363 mulf8u_prepared +//SEG368 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) // mulf8u_prepared(byte register(X) b) @@ -11741,9 +11803,9 @@ mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = $10 - //SEG364 [179] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx + //SEG369 [181] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx stx memB - //SEG365 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG370 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } sec sm1: lda mulf_sqr1_lo,x @@ -11755,33 +11817,33 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG366 [181] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG371 [183] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 - //SEG367 mulf8u_prepared::@return - //SEG368 [182] return + //SEG372 mulf8u_prepared::@return + //SEG373 [184] return rts } -//SEG369 mulf8u_prepare +//SEG374 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte register(A) a) mulf8u_prepare: { .label memA = $fd - //SEG370 [184] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG375 [186] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG371 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG376 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 eor #$ff sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 - //SEG372 mulf8u_prepare::@return - //SEG373 [186] return + //SEG377 mulf8u_prepare::@return + //SEG378 [188] return rts } -//SEG374 muls8s +//SEG379 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction // muls8s(signed byte zeropage(2) a, signed byte register(X) b) @@ -11789,26 +11851,26 @@ muls8s: { .label m = 8 .label return = 8 .label a = 2 - //SEG375 [187] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 -- vbsz1_lt_0_then_la1 + //SEG380 [189] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4 -- vbsz1_lt_0_then_la1 lda a bmi b6 - //SEG376 muls8s::@2 - //SEG377 [188] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 + //SEG381 muls8s::@2 + //SEG382 [190] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 cmp #1 bmi b5 - //SEG378 [189] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3] - //SEG379 [189] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#0] -- vbsyy=vbsc1 + //SEG383 [191] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3] + //SEG384 [191] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#0] -- vbsyy=vbsc1 ldy #0 - //SEG380 [189] phi (signed word) muls8s::m#3 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vwsz1=vbsc1 + //SEG385 [191] phi (signed word) muls8s::m#3 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vwsz1=vbsc1 tya sta m sta m+1 - //SEG381 [189] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] - //SEG382 [189] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG383 [189] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy - //SEG384 muls8s::@3 + //SEG386 [191] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG387 [191] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG388 [191] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG389 muls8s::@3 b3: - //SEG385 [190] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx + //SEG390 [192] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx txa sta $fe ora #$7f @@ -11823,38 +11885,38 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG386 [191] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy + //SEG391 [193] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy iny - //SEG387 [192] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 + //SEG392 [194] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b3 - //SEG388 [193] phi from muls8s::@3 muls8s::@4 to muls8s::@1 [phi:muls8s::@3/muls8s::@4->muls8s::@1] - //SEG389 [193] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@4->muls8s::@1#0] -- register_copy + //SEG393 [195] phi from muls8s::@3 muls8s::@4 to muls8s::@1 [phi:muls8s::@3/muls8s::@4->muls8s::@1] + //SEG394 [195] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@4->muls8s::@1#0] -- register_copy rts - //SEG390 [193] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1] + //SEG395 [195] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1] b5: - //SEG391 [193] phi (signed word) muls8s::return#0 = (signed byte) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vbsc1 + //SEG396 [195] phi (signed word) muls8s::return#0 = (signed byte) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vbsc1 lda #0 sta return sta return+1 - //SEG392 muls8s::@1 - //SEG393 muls8s::@return - //SEG394 [194] return + //SEG397 muls8s::@1 + //SEG398 muls8s::@return + //SEG399 [196] return rts - //SEG395 [195] phi from muls8s to muls8s::@4 [phi:muls8s->muls8s::@4] + //SEG400 [197] phi from muls8s to muls8s::@4 [phi:muls8s->muls8s::@4] b6: - //SEG396 [195] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@4#0] -- vbsyy=vbsc1 + //SEG401 [197] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@4#0] -- vbsyy=vbsc1 ldy #0 - //SEG397 [195] phi (signed word) muls8s::m#5 = (signed byte) 0 [phi:muls8s->muls8s::@4#1] -- vwsz1=vbsc1 + //SEG402 [197] phi (signed word) muls8s::m#5 = (signed byte) 0 [phi:muls8s->muls8s::@4#1] -- vwsz1=vbsc1 tya sta m sta m+1 - //SEG398 [195] phi from muls8s::@4 to muls8s::@4 [phi:muls8s::@4->muls8s::@4] - //SEG399 [195] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@4->muls8s::@4#0] -- register_copy - //SEG400 [195] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@4->muls8s::@4#1] -- register_copy - //SEG401 muls8s::@4 + //SEG403 [197] phi from muls8s::@4 to muls8s::@4 [phi:muls8s::@4->muls8s::@4] + //SEG404 [197] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@4->muls8s::@4#0] -- register_copy + //SEG405 [197] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@4->muls8s::@4#1] -- register_copy + //SEG406 muls8s::@4 b4: - //SEG402 [196] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx + //SEG407 [198] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx txa sta $fe ora #$7f @@ -11869,14 +11931,14 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG403 [197] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy + //SEG408 [199] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy dey - //SEG404 [198] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsyy_neq_vbsz1_then_la1 + //SEG409 [200] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b4 rts } -//SEG405 mul8u_compare +//SEG410 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { .label ms = 8 @@ -11884,55 +11946,55 @@ mul8u_compare: { .label mn = $c .label b = $13 .label a = $12 - //SEG406 [200] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] - //SEG407 [200] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG411 [202] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG412 [202] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a - //SEG408 [200] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1] - //SEG409 [200] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy - //SEG410 mul8u_compare::@1 + //SEG413 [202] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1] + //SEG414 [202] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy + //SEG415 mul8u_compare::@1 b1: - //SEG411 [201] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] - //SEG412 [201] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG416 [203] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG417 [203] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b - //SEG413 [201] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] - //SEG414 [201] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy - //SEG415 mul8u_compare::@2 + //SEG418 [203] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG419 [203] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG420 mul8u_compare::@2 b2: - //SEG416 [202] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - //SEG417 [203] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG421 [204] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + //SEG422 [205] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG418 [204] call muls8u + //SEG423 [206] call muls8u jsr muls8u - //SEG419 [205] (word) muls8u::return#2 ← (word) muls8u::return#0 - //SEG420 mul8u_compare::@10 - //SEG421 [206] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - //SEG422 [207] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 + //SEG424 [207] (word) muls8u::return#2 ← (word) muls8u::return#0 + //SEG425 mul8u_compare::@10 + //SEG426 [208] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + //SEG427 [209] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 lda a - //SEG423 [208] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG428 [210] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG424 [209] call mulf8u + //SEG429 [211] call mulf8u jsr mulf8u - //SEG425 [210] (word) mulf8u::return#2 ← (word) mulf8u::return#0 - //SEG426 mul8u_compare::@11 - //SEG427 [211] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - //SEG428 [212] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG430 [212] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + //SEG431 mul8u_compare::@11 + //SEG432 [213] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + //SEG433 [214] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG429 [213] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 + //SEG434 [215] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 lda b - //SEG430 [214] call mul8u - //SEG431 [146] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u] - //SEG432 [146] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy - //SEG433 [146] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- vwuz1=vbuaa + //SEG435 [216] call mul8u + //SEG436 [148] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u] + //SEG437 [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy + //SEG438 [148] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- vwuz1=vbuaa sta mul8u.mb lda #0 sta mul8u.mb+1 jsr mul8u - //SEG434 [215] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG435 mul8u_compare::@12 - //SEG436 [216] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - //SEG437 [217] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG439 [217] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG440 mul8u_compare::@12 + //SEG441 [218] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + //SEG442 [219] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -11940,19 +12002,19 @@ mul8u_compare: { cmp mf+1 beq b6 !: - //SEG438 [218] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6] - //SEG439 mul8u_compare::@6 - //SEG440 [219] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] - //SEG441 [219] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG443 [220] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6] + //SEG444 mul8u_compare::@6 + //SEG445 [221] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG446 [221] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG442 [219] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3] + //SEG447 [221] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3] b6: - //SEG443 [219] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG448 [221] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 - //SEG444 mul8u_compare::@3 + //SEG449 mul8u_compare::@3 b3: - //SEG445 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 + //SEG450 [222] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -11960,210 +12022,210 @@ mul8u_compare: { cmp mn+1 beq b4 !: - //SEG446 [222] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] - //SEG447 [222] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 + //SEG451 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG452 [224] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG448 [221] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14] - //SEG449 mul8u_compare::@14 - //SEG450 [222] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4] - //SEG451 [222] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy - //SEG452 mul8u_compare::@4 + //SEG453 [223] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14] + //SEG454 mul8u_compare::@14 + //SEG455 [224] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4] + //SEG456 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy + //SEG457 mul8u_compare::@4 b4: - //SEG453 [223] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG458 [225] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG454 mul8u_compare::@7 - //SEG455 [224] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG459 mul8u_compare::@7 + //SEG460 [226] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG456 [225] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG461 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG457 [226] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - //SEG458 [227] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - //SEG459 [228] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - //SEG460 [229] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - //SEG461 [230] call mul8u_error - //SEG462 [240] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error] + //SEG462 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + //SEG463 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + //SEG464 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + //SEG465 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + //SEG466 [232] call mul8u_error + //SEG467 [242] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error] jsr mul8u_error - //SEG463 mul8u_compare::@return - //SEG464 [231] return + //SEG468 mul8u_compare::@return + //SEG469 [233] return rts - //SEG465 mul8u_compare::@5 + //SEG470 mul8u_compare::@5 b5: - //SEG466 [232] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG471 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG467 [233] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG472 [235] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2 - //SEG468 mul8u_compare::@8 - //SEG469 [234] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG473 mul8u_compare::@8 + //SEG474 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG470 [235] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG475 [237] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1 - //SEG471 [236] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9] - //SEG472 mul8u_compare::@9 - //SEG473 [237] call print_str - //SEG474 [62] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str] - //SEG475 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@9->print_str#0] -- register_copy - //SEG476 [62] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 + //SEG476 [238] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9] + //SEG477 mul8u_compare::@9 + //SEG478 [239] call print_str + //SEG479 [62] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str] + //SEG480 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#32 [phi:mul8u_compare::@9->print_str#0] -- register_copy + //SEG481 [62] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG477 [238] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13] - //SEG478 mul8u_compare::@13 - //SEG479 [239] call print_ln - //SEG480 [57] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln] - //SEG481 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@13->print_ln#0] -- register_copy - //SEG482 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@13->print_ln#1] -- register_copy + //SEG482 [240] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13] + //SEG483 mul8u_compare::@13 + //SEG484 [241] call print_ln + //SEG485 [57] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln] + //SEG486 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy + //SEG487 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@13->print_ln#1] -- register_copy jsr print_ln rts str: .text "multiply results match!@" } -//SEG483 mul8u_error +//SEG488 mul8u_error // mul8u_error(byte register(X) a, byte zeropage($13) b, word zeropage(8) ms, word zeropage($c) mn, word zeropage($10) mf) mul8u_error: { .label b = $13 .label ms = 8 .label mn = $c .label mf = $10 - //SEG484 [241] call print_str - //SEG485 [62] phi from mul8u_error to print_str [phi:mul8u_error->print_str] - //SEG486 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG487 [62] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG489 [243] call print_str + //SEG490 [62] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG491 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#32 [phi:mul8u_error->print_str#0] -- register_copy + //SEG492 [62] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG488 mul8u_error::@1 - //SEG489 [242] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - //SEG490 [243] call print_byte - //SEG491 [107] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] - //SEG492 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG493 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG493 mul8u_error::@1 + //SEG494 [244] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + //SEG495 [245] call print_byte + //SEG496 [113] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG497 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG498 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG494 [244] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] - //SEG495 mul8u_error::@2 - //SEG496 [245] call print_str - //SEG497 [62] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] - //SEG498 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG499 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG499 [246] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG500 mul8u_error::@2 + //SEG501 [247] call print_str + //SEG502 [62] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG503 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG504 [62] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG500 mul8u_error::@3 - //SEG501 [246] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 + //SEG505 mul8u_error::@3 + //SEG506 [248] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 ldx b - //SEG502 [247] call print_byte - //SEG503 [107] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] - //SEG504 [107] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG505 [107] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG507 [249] call print_byte + //SEG508 [113] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG509 [113] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG510 [113] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG506 [248] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] - //SEG507 mul8u_error::@4 - //SEG508 [249] call print_str - //SEG509 [62] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] - //SEG510 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG511 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG511 [250] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG512 mul8u_error::@4 + //SEG513 [251] call print_str + //SEG514 [62] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG515 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG516 [62] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG512 mul8u_error::@5 - //SEG513 [250] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - //SEG514 [251] call print_word - //SEG515 [101] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] - //SEG516 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG517 [101] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG517 mul8u_error::@5 + //SEG518 [252] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + //SEG519 [253] call print_word + //SEG520 [107] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG521 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG522 [107] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG518 [252] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] - //SEG519 mul8u_error::@6 - //SEG520 [253] call print_str - //SEG521 [62] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] - //SEG522 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG523 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG523 [254] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG524 mul8u_error::@6 + //SEG525 [255] call print_str + //SEG526 [62] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG527 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG528 [62] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG524 mul8u_error::@7 - //SEG525 [254] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG529 mul8u_error::@7 + //SEG530 [256] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG526 [255] call print_word - //SEG527 [101] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] - //SEG528 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG529 [101] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG531 [257] call print_word + //SEG532 [107] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG533 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG534 [107] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG530 [256] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] - //SEG531 mul8u_error::@8 - //SEG532 [257] call print_str - //SEG533 [62] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] - //SEG534 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG535 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG535 [258] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG536 mul8u_error::@8 + //SEG537 [259] call print_str + //SEG538 [62] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG539 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG540 [62] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG536 mul8u_error::@9 - //SEG537 [258] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG541 mul8u_error::@9 + //SEG542 [260] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG538 [259] call print_word - //SEG539 [101] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] - //SEG540 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG541 [101] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG543 [261] call print_word + //SEG544 [107] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG545 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG546 [107] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG542 [260] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] - //SEG543 mul8u_error::@10 - //SEG544 [261] call print_ln - //SEG545 [57] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] - //SEG546 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG547 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG547 [262] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG548 mul8u_error::@10 + //SEG549 [263] call print_ln + //SEG550 [57] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG551 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG552 [57] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln - //SEG548 mul8u_error::@return - //SEG549 [262] return + //SEG553 mul8u_error::@return + //SEG554 [264] return rts str: .text "multiply mismatch @" } -//SEG550 mulf8u +//SEG555 mulf8u // Fast multiply two unsigned bytes to a word result // mulf8u(byte register(A) a, byte register(X) b) mulf8u: { .label return = $10 - //SEG551 [263] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - //SEG552 [264] call mulf8u_prepare - //SEG553 [183] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] - //SEG554 [183] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG556 [265] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + //SEG557 [266] call mulf8u_prepare + //SEG558 [185] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG559 [185] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare - //SEG555 mulf8u::@1 - //SEG556 [265] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - //SEG557 [266] call mulf8u_prepared - //SEG558 [178] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared] - //SEG559 [178] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy + //SEG560 mulf8u::@1 + //SEG561 [267] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + //SEG562 [268] call mulf8u_prepared + //SEG563 [180] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared] + //SEG564 [180] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG560 [267] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 - //SEG561 mulf8u::@2 - //SEG562 [268] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 - //SEG563 mulf8u::@return - //SEG564 [269] return + //SEG565 [269] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG566 mulf8u::@2 + //SEG567 [270] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + //SEG568 mulf8u::@return + //SEG569 [271] return rts } -//SEG565 muls8u +//SEG570 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition // muls8u(byte zeropage($12) a, byte register(X) b) @@ -12171,23 +12233,23 @@ muls8u: { .label return = 8 .label m = 8 .label a = $12 - //SEG566 [270] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + //SEG571 [272] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b3 - //SEG567 [271] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] - //SEG568 [271] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 + //SEG572 [273] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG573 [273] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG569 [271] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG574 [273] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 tya sta m sta m+1 - //SEG570 [271] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] - //SEG571 [271] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG572 [271] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy - //SEG573 muls8u::@2 + //SEG575 [273] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG576 [273] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG577 [273] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG578 muls8u::@2 b2: - //SEG574 [272] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG579 [274] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -12195,121 +12257,121 @@ muls8u: { bcc !+ inc m+1 !: - //SEG575 [273] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy + //SEG580 [275] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy iny - //SEG576 [274] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 + //SEG581 [276] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2 - //SEG577 [275] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] - //SEG578 [275] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG582 [277] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG583 [277] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy rts - //SEG579 [275] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG584 [277] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b3: - //SEG580 [275] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG585 [277] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #0 sta return sta return+1 - //SEG581 muls8u::@1 - //SEG582 muls8u::@return - //SEG583 [276] return + //SEG586 muls8u::@1 + //SEG587 muls8u::@return + //SEG588 [278] return rts } -//SEG584 mulf_tables_cmp +//SEG589 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = 8 .label kc_sqr = $14 - //SEG585 [278] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] - //SEG586 [278] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG590 [280] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG591 [280] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG587 [278] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG592 [280] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 - //SEG588 [278] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] - //SEG589 [278] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG590 [278] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy - //SEG591 mulf_tables_cmp::@1 + //SEG593 [280] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG594 [280] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG595 [280] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG596 mulf_tables_cmp::@1 b1: - //SEG592 [279] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG597 [281] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y cmp (asm_sqr),y beq b2 - //SEG593 mulf_tables_cmp::@3 - //SEG594 [280] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + //SEG598 mulf_tables_cmp::@3 + //SEG599 [282] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG595 [281] call print_str - //SEG596 [62] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] - //SEG597 [62] phi (byte*) print_char_cursor#152 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG600 [283] call print_str + //SEG601 [62] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG602 [62] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG598 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG603 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG599 mulf_tables_cmp::@5 - //SEG600 [282] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - //SEG601 [283] call print_word - //SEG602 [101] phi from mulf_tables_cmp::@5 to print_word [phi:mulf_tables_cmp::@5->print_word] - //SEG603 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@5->print_word#0] -- register_copy - //SEG604 [101] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@5->print_word#1] -- register_copy + //SEG604 mulf_tables_cmp::@5 + //SEG605 [284] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + //SEG606 [285] call print_word + //SEG607 [107] phi from mulf_tables_cmp::@5 to print_word [phi:mulf_tables_cmp::@5->print_word] + //SEG608 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@5->print_word#0] -- register_copy + //SEG609 [107] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@5->print_word#1] -- register_copy jsr print_word - //SEG605 [284] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@6] - //SEG606 mulf_tables_cmp::@6 - //SEG607 [285] call print_str - //SEG608 [62] phi from mulf_tables_cmp::@6 to print_str [phi:mulf_tables_cmp::@6->print_str] - //SEG609 [62] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@6->print_str#0] -- register_copy - //SEG610 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@6->print_str#1] -- pbuz1=pbuc1 + //SEG610 [286] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@6] + //SEG611 mulf_tables_cmp::@6 + //SEG612 [287] call print_str + //SEG613 [62] phi from mulf_tables_cmp::@6 to print_str [phi:mulf_tables_cmp::@6->print_str] + //SEG614 [62] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@6->print_str#0] -- register_copy + //SEG615 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@6->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG611 mulf_tables_cmp::@7 - //SEG612 [286] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG616 mulf_tables_cmp::@7 + //SEG617 [288] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG613 [287] call print_word - //SEG614 [101] phi from mulf_tables_cmp::@7 to print_word [phi:mulf_tables_cmp::@7->print_word] - //SEG615 [101] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@7->print_word#0] -- register_copy - //SEG616 [101] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@7->print_word#1] -- register_copy + //SEG618 [289] call print_word + //SEG619 [107] phi from mulf_tables_cmp::@7 to print_word [phi:mulf_tables_cmp::@7->print_word] + //SEG620 [107] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@7->print_word#0] -- register_copy + //SEG621 [107] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@7->print_word#1] -- register_copy jsr print_word - //SEG617 [288] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return] - //SEG618 [288] phi (byte*) print_line_cursor#10 = (byte*) 1024 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG622 [290] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return] + //SEG623 [290] phi (byte*) print_line_cursor#10 = (byte*) 1024 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG619 [288] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy - //SEG620 mulf_tables_cmp::@return - //SEG621 [289] return + //SEG624 [290] phi (byte*) print_char_cursor#32 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy + //SEG625 mulf_tables_cmp::@return + //SEG626 [291] return rts - //SEG622 mulf_tables_cmp::@2 + //SEG627 mulf_tables_cmp::@2 b2: - //SEG623 [290] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG628 [292] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG624 [291] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG629 [293] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG625 [292] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG630 [294] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1 @@ -12318,53 +12380,53 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@4] - //SEG627 mulf_tables_cmp::@4 - //SEG628 [294] call print_str - //SEG629 [62] phi from mulf_tables_cmp::@4 to print_str [phi:mulf_tables_cmp::@4->print_str] - //SEG630 [62] phi (byte*) print_char_cursor#152 = (byte*) 1024 [phi:mulf_tables_cmp::@4->print_str#0] -- pbuz1=pbuc1 + //SEG631 [295] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@4 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@4] + //SEG632 mulf_tables_cmp::@4 + //SEG633 [296] call print_str + //SEG634 [62] phi from mulf_tables_cmp::@4 to print_str [phi:mulf_tables_cmp::@4->print_str] + //SEG635 [62] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@4->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG631 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@4->print_str#1] -- pbuz1=pbuc1 + //SEG636 [62] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG632 [295] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@8 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@8] - //SEG633 mulf_tables_cmp::@8 - //SEG634 [296] call print_ln - //SEG635 [57] phi from mulf_tables_cmp::@8 to print_ln [phi:mulf_tables_cmp::@8->print_ln] - //SEG636 [57] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_ln#0] -- register_copy - //SEG637 [57] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@8->print_ln#1] -- pbuz1=pbuc1 + //SEG637 [297] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@8 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@8] + //SEG638 mulf_tables_cmp::@8 + //SEG639 [298] call print_ln + //SEG640 [57] phi from mulf_tables_cmp::@8 to print_ln [phi:mulf_tables_cmp::@8->print_ln] + //SEG641 [57] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@8->print_ln#0] -- register_copy + //SEG642 [57] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@8->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG638 mulf_tables_cmp::@9 - //SEG639 [297] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG643 mulf_tables_cmp::@9 + //SEG644 [299] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG640 [288] phi from mulf_tables_cmp::@9 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return] - //SEG641 [288] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#0] -- register_copy - //SEG642 [288] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#1] -- register_copy + //SEG645 [290] phi from mulf_tables_cmp::@9 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return] + //SEG646 [290] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#0] -- register_copy + //SEG647 [290] phi (byte*) print_char_cursor#32 = (byte*~) print_char_cursor#227 [phi:mulf_tables_cmp::@9->mulf_tables_cmp::@return#1] -- register_copy rts str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG643 mulf_init_asm +//SEG648 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { // Ensure the ASM tables are not detected as unused by the optimizer .label mem = $ff - //SEG644 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG649 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -12403,23 +12465,23 @@ mulf_init_asm: { dey inx bne !- - //SEG645 [299] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG646 [300] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG647 [301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG648 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem - //SEG649 mulf_init_asm::@return - //SEG650 [303] return + //SEG654 mulf_init_asm::@return + //SEG655 [305] return rts } -//SEG651 mulf_init +//SEG656 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = $18 @@ -12429,70 +12491,70 @@ mulf_init: { .label sqr2_hi = $1f .label sqr2_lo = $1d .label dir = $21 - //SEG652 [305] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG653 [305] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG657 [307] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG658 [307] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG654 [305] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG659 [307] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG655 [305] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG660 [307] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG656 [305] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG661 [307] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr sta sqr+1 - //SEG657 [305] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG662 [307] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG658 [305] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG659 [305] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG660 [305] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG661 [305] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG662 [305] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG663 [305] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG664 mulf_init::@1 + //SEG663 [307] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG664 [307] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG665 [307] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG666 [307] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG667 [307] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG668 [307] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG669 mulf_init::@1 b1: - //SEG665 [306] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG670 [308] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG666 [307] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG671 [309] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG667 [308] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG672 [310] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG668 mulf_init::@3 - //SEG669 [309] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG673 mulf_init::@3 + //SEG674 [311] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG670 [310] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG675 [312] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG671 [311] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] - //SEG672 [311] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - //SEG673 [311] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy - //SEG674 mulf_init::@2 + //SEG676 [313] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + //SEG677 [313] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + //SEG678 [313] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + //SEG679 mulf_init::@2 b2: - //SEG675 [312] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG680 [314] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG676 [313] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa + //SEG681 [315] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG677 [314] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG682 [316] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG678 [315] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa + //SEG683 [317] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG679 [316] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG684 [318] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG680 [317] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG685 [319] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -12500,130 +12562,130 @@ mulf_init: { bcc !+ inc sqr+1 !: - //SEG681 [318] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG686 [320] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG682 [319] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG687 [321] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@4] - //SEG684 [320] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG688 [322] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] + //SEG689 [322] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG685 [320] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + //SEG690 [322] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG686 [320] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + //SEG691 [322] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG687 [320] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 + //SEG692 [322] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 ldx #-1 - //SEG688 [320] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] - //SEG689 [320] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - //SEG690 [320] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - //SEG691 [320] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - //SEG692 [320] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy - //SEG693 mulf_init::@4 + //SEG693 [322] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + //SEG694 [322] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + //SEG695 [322] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + //SEG696 [322] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + //SEG697 [322] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + //SEG698 mulf_init::@4 b4: - //SEG694 [321] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG699 [323] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG695 [322] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG700 [324] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG696 [323] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG701 [325] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG697 [324] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG702 [326] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG698 [325] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 + //SEG703 [327] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG699 [327] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] - //SEG700 [327] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + //SEG704 [329] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + //SEG705 [329] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG701 [326] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] - //SEG702 mulf_init::@7 - //SEG703 [327] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] - //SEG704 [327] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy - //SEG705 mulf_init::@5 + //SEG706 [328] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + //SEG707 mulf_init::@7 + //SEG708 [329] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + //SEG709 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + //SEG710 mulf_init::@5 b5: - //SEG706 [328] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG711 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG707 [329] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + //SEG712 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4 lda sqr2_lo cmp #print_cls::@1] - //SEG715 [334] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG719 [336] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG720 [336] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG716 [334] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG717 [334] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG718 print_cls::@1 + //SEG721 [336] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG722 [336] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG723 print_cls::@1 b1: - //SEG719 [335] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG724 [337] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG720 [336] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG725 [338] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG721 [337] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG726 [339] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG722 print_cls::@return - //SEG723 [338] return + //SEG727 print_cls::@return + //SEG728 [340] return rts } -//SEG724 File Data +//SEG729 File Data print_hextab: .text "0123456789abcdef" // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // =(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [28] phi() [29] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [30] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [31] (byte*) print_char_cursor#45 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 ) - [31] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 ) - [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - [33] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [30] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) + [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + [32] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [34] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [33] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [35] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [36] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [37] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [38] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [39] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [40] (byte*) print_char_cursor#48 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#12 ) - [40] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [43] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [46] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [47] return - to:@return -print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@2 - [48] (byte*) print_char_cursor#34 ← phi( main::@2/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#48 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 ) - [48] (byte) print_char::ch#4 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [49] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 - [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#34 +print_sword::@1: scope:[print_sword] from print_sword + [34] phi() + [35] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 + to:print_sword::@2 +print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [37] (byte*) print_char_cursor#36 ← phi( main::@2/(byte*) print_char_cursor#13 print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#47 print_sword::@3/(byte*) print_char_cursor#47 ) + [37] (byte) print_char::ch#5 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 + [39] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#36 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [51] return + [40] return + to:@return +print_word: scope:[print_word] from print_sword::@2 + [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [42] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [44] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [45] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [46] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [49] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [51] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [52] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [53] return to:@return print_cls: scope:[print_cls] from main - [52] phi() + [54] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [53] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [54] *((byte*) print_cls::sc#2) ← (byte) ' ' - [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [56] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [55] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [56] *((byte*) print_cls::sc#2) ← (byte) ' ' + [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [58] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [57] return + [59] return to:@return diff --git a/src/test/ref/test-signed-word-minus-byte.log b/src/test/ref/test-signed-word-minus-byte.log index e24393888..7bb5c8fc9 100644 --- a/src/test/ref/test-signed-word-minus-byte.log +++ b/src/test/ref/test-signed-word-minus-byte.log @@ -4,6 +4,7 @@ Culled Empty Block (label) @2 Culled Empty Block (label) @3 Culled Empty Block (label) @4 Culled Empty Block (label) @5 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @6 Culled Empty Block (label) @7 Culled Empty Block (label) @8 @@ -26,15 +27,15 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@12 print_ln: scope:[print_ln] from main::@6 - (byte*) print_char_cursor#44 ← phi( main::@6/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#46 ← phi( main::@6/(byte*) print_char_cursor#20 ) (byte*) print_line_cursor#17 ← phi( main::@6/(byte*) print_line_cursor#19 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#23 ← phi( print_ln/(byte*) print_char_cursor#44 print_ln::@1/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#24 ← phi( print_ln/(byte*) print_char_cursor#46 print_ln::@1/(byte*) print_char_cursor#24 ) (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#17 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#9 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#23 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#24 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -42,111 +43,121 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#1 ← (byte*) print_line_cursor#10 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#24 ← phi( print_ln::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#25 ← phi( print_ln::@2/(byte*) print_char_cursor#1 ) (byte*) print_line_cursor#11 ← phi( print_ln::@2/(byte*) print_line_cursor#10 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#11 - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#24 + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#25 return to:@return print_sword: scope:[print_sword] from main::@1 main::@5 - (byte*) print_char_cursor#52 ← phi( main::@1/(byte*) print_char_cursor#50 main::@5/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#55 ← phi( main::@1/(byte*) print_char_cursor#53 main::@5/(byte*) print_char_cursor#19 ) (signed word) print_sword::w#3 ← phi( main::@1/(signed word) print_sword::w#1 main::@5/(signed word) print_sword::w#2 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#45 ← phi( print_sword/(byte*) print_char_cursor#52 print_sword::@4/(byte*) print_char_cursor#4 ) - (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#4 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#25 ← phi( print_sword::@1/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#25 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#3 ) - (byte*) print_char_cursor#46 ← phi( print_sword/(byte*) print_char_cursor#52 ) + (byte*) print_char_cursor#47 ← phi( print_sword/(byte*) print_char_cursor#55 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#5 ← phi( print_sword::@2/(signed word) print_sword::w#6 ) - (byte*) print_char_cursor#26 ← phi( print_sword::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#26 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#5 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#4 ← phi( print_sword::@1/(signed word) print_sword::w#6 ) + (byte*) print_char_cursor#26 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#26 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#27 ← phi( print_sword::@3/(byte*) print_char_cursor#3 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#27 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#3 ) + (byte*) print_char_cursor#48 ← phi( print_sword/(byte*) print_char_cursor#55 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#7 ← phi( print_sword::@3/(signed word) print_sword::w#8 ) + (byte*) print_char_cursor#27 ← phi( print_sword::@3/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#27 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#49 ← phi( print_sword::@5/(byte*) print_char_cursor#3 print_sword::@6/(byte*) print_char_cursor#4 ) + (signed word) print_sword::w#5 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#7 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#5 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#28 ← phi( print_sword::@2/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#28 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#29 ← phi( print_sword::@7/(byte*) print_char_cursor#5 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#29 return to:@return -print_word: scope:[print_word] from print_sword::@1 - (byte*) print_char_cursor#47 ← phi( print_sword::@1/(byte*) print_char_cursor#45 ) - (word) print_word::w#1 ← phi( print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from print_sword::@2 + (byte*) print_char_cursor#50 ← phi( print_sword::@2/(byte*) print_char_cursor#49 ) + (word) print_word::w#1 ← phi( print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#1 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#2 ← phi( print_word/(word) print_word::w#1 ) - (byte*) print_char_cursor#28 ← phi( print_word/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#28 + (byte*) print_char_cursor#30 ← phi( print_word/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#30 (byte~) print_word::$2 ← < (word) print_word::w#2 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#29 ← phi( print_word::@1/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#29 + (byte*) print_char_cursor#31 ← phi( print_word::@1/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#31 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#30 ← phi( print_word::@2/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#30 + (byte*) print_char_cursor#32 ← phi( print_word::@2/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#32 return to:@return @12: scope:[] from @begin (byte*) print_screen#6 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#53 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#56 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#22 ← phi( @begin/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@20 print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) print_char_cursor#48 ← phi( print_word/(byte*) print_char_cursor#47 print_word::@1/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#51 ← phi( print_word/(byte*) print_char_cursor#50 print_word::@1/(byte*) print_char_cursor#7 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4 - (byte) print_char::ch#1 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char 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*) print_char_cursor#31 ← phi( print_byte/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#31 + (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#33 (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f - (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#32 ← phi( print_byte::@1/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#32 + (byte*) print_char_cursor#34 ← phi( print_byte::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#34 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#33 ← phi( print_byte::@2/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#33 + (byte*) print_char_cursor#35 ← phi( print_byte::@2/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#35 return to:@return -print_char: scope:[print_char] from main::@4 print_byte print_byte::@1 print_sword::@2 - (byte*) print_char_cursor#34 ← phi( main::@4/(byte*) print_char_cursor#17 print_byte/(byte*) print_char_cursor#48 print_byte::@1/(byte*) print_char_cursor#9 print_sword::@2/(byte*) print_char_cursor#46 ) - (byte) print_char::ch#4 ← phi( main::@4/(byte) print_char::ch#3 print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 - (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#34 +print_char: scope:[print_char] from main::@4 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#36 ← phi( main::@4/(byte*) print_char_cursor#18 print_byte/(byte*) print_char_cursor#51 print_byte::@1/(byte*) print_char_cursor#10 print_sword::@1/(byte*) print_char_cursor#47 print_sword::@3/(byte*) print_char_cursor#48 ) + (byte) print_char::ch#5 ← phi( main::@4/(byte) print_char::ch#4 print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 + (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#36 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#35 ← phi( print_char/(byte*) print_char_cursor#12 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#35 + (byte*) print_char_cursor#37 ← phi( print_char/(byte*) print_char_cursor#13 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#37 return to:@return print_cls: scope:[print_cls] from main @@ -165,17 +176,17 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#14 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#15 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#36 ← phi( print_cls::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#38 ← phi( print_cls::@2/(byte*) print_char_cursor#15 ) (byte*) print_line_cursor#12 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#12 - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#36 + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#38 return to:@return main: scope:[main] from @20 - (byte*) print_char_cursor#49 ← phi( @20/(byte*) print_char_cursor#51 ) + (byte*) print_char_cursor#52 ← phi( @20/(byte*) print_char_cursor#54 ) (byte*) print_line_cursor#18 ← phi( @20/(byte*) print_line_cursor#20 ) (byte*) print_screen#4 ← phi( @20/(byte*) print_screen#5 ) (signed word) main::w1#0 ← (number) $4d2 @@ -183,16 +194,16 @@ main: scope:[main] from @20 to:main::@3 main::@3: scope:[main] from main (signed word) main::w1#3 ← phi( main/(signed word) main::w1#0 ) - (byte*) print_char_cursor#37 ← phi( main/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#39 ← phi( main/(byte*) print_char_cursor#16 ) (byte*) print_line_cursor#13 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#13 - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#37 + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#39 (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main::@3 main::@7 (byte) main::i#6 ← phi( main::@3/(byte) main::i#0 main::@7/(byte) main::i#1 ) (byte*) print_line_cursor#24 ← phi( main::@3/(byte*) print_line_cursor#5 main::@7/(byte*) print_line_cursor#6 ) - (byte*) print_char_cursor#50 ← phi( main::@3/(byte*) print_char_cursor#16 main::@7/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#53 ← phi( main::@3/(byte*) print_char_cursor#17 main::@7/(byte*) print_char_cursor#21 ) (signed word) main::w1#2 ← phi( main::@3/(signed word) main::w1#3 main::@7/(signed word) main::w1#4 ) (number~) main::$1 ← (signed word) main::w1#2 - (number) $5b (signed word) main::w2#0 ← (number~) main::$1 @@ -206,9 +217,9 @@ main::@4: scope:[main] from main::@1 (byte) main::i#5 ← phi( main::@1/(byte) main::i#6 ) (byte*) print_line_cursor#23 ← phi( main::@1/(byte*) print_line_cursor#24 ) (signed word) main::w2#2 ← phi( main::@1/(signed word) main::w2#0 ) - (byte*) print_char_cursor#38 ← phi( main::@1/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#38 - (byte) print_char::ch#3 ← (byte) ' ' + (byte*) print_char_cursor#40 ← phi( main::@1/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#40 + (byte) print_char::ch#4 ← (byte) ' ' call print_char to:main::@5 main::@5: scope:[main] from main::@4 @@ -216,8 +227,8 @@ main::@5: scope:[main] from main::@4 (byte) main::i#4 ← phi( main::@4/(byte) main::i#5 ) (byte*) print_line_cursor#21 ← phi( main::@4/(byte*) print_line_cursor#23 ) (signed word) main::w2#1 ← phi( main::@4/(signed word) main::w2#2 ) - (byte*) print_char_cursor#39 ← phi( main::@4/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#39 + (byte*) print_char_cursor#41 ← phi( main::@4/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#41 (signed word) print_sword::w#2 ← (signed word) main::w2#1 call print_sword to:main::@6 @@ -225,39 +236,39 @@ main::@6: scope:[main] from main::@5 (signed word) main::w1#5 ← phi( main::@5/(signed word) main::w1#6 ) (byte) main::i#3 ← phi( main::@5/(byte) main::i#4 ) (byte*) print_line_cursor#19 ← phi( main::@5/(byte*) print_line_cursor#21 ) - (byte*) print_char_cursor#40 ← phi( main::@5/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#40 + (byte*) print_char_cursor#42 ← phi( main::@5/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#42 call print_ln to:main::@7 main::@7: scope:[main] from main::@6 (signed word) main::w1#4 ← phi( main::@6/(signed word) main::w1#5 ) (byte) main::i#2 ← phi( main::@6/(byte) main::i#3 ) - (byte*) print_char_cursor#41 ← phi( main::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#43 ← phi( main::@6/(byte*) print_char_cursor#2 ) (byte*) print_line_cursor#14 ← phi( main::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#14 - (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#41 + (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#43 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,$a) (bool~) main::$7 ← (byte) main::i#1 != rangelast(0,$a) if((bool~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@7 - (byte*) print_char_cursor#42 ← phi( main::@7/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#44 ← phi( main::@7/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#15 ← phi( main::@7/(byte*) print_line_cursor#6 ) (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#15 - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#42 + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#44 return to:@return @20: scope:[] from @12 (byte*) print_screen#5 ← phi( @12/(byte*) print_screen#6 ) - (byte*) print_char_cursor#51 ← phi( @12/(byte*) print_char_cursor#53 ) + (byte*) print_char_cursor#54 ← phi( @12/(byte*) print_char_cursor#56 ) (byte*) print_line_cursor#20 ← phi( @12/(byte*) print_line_cursor#22 ) call main to:@21 @21: scope:[] from @20 - (byte*) print_char_cursor#43 ← phi( @20/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#45 ← phi( @20/(byte*) print_char_cursor#22 ) (byte*) print_line_cursor#16 ← phi( @20/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#16 - (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#43 + (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#45 to:@end @end: scope:[] from @21 @@ -319,6 +330,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#2 (byte) print_char::ch#3 (byte) print_char::ch#4 +(byte) print_char::ch#5 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -370,6 +382,9 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#51 (byte*) print_char_cursor#52 (byte*) print_char_cursor#53 +(byte*) print_char_cursor#54 +(byte*) print_char_cursor#55 +(byte*) print_char_cursor#56 (byte*) print_char_cursor#6 (byte*) print_char_cursor#7 (byte*) print_char_cursor#8 @@ -428,13 +443,14 @@ SYMBOL TABLE SSA (byte*) print_screen#6 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -444,6 +460,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#4 (signed word) print_sword::w#5 (signed word) print_sword::w#6 +(signed word) print_sword::w#7 +(signed word) print_sword::w#8 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -468,7 +486,7 @@ Adding number conversion cast (snumber) $29 in (number~) main::$2 ← (signed wo Adding number conversion cast (snumber) main::$2 in (number~) main::$2 ← (signed word) main::w2#0 - (snumber)(number) $29 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#4 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#5 Inlining cast (signed word) main::w1#0 ← (snumber)(number) $4d2 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 @@ -493,104 +511,111 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f Inferred type updated to signed word in (snumber~) main::$1 ← (signed word) main::w1#2 - (signed byte) $5b Inferred type updated to signed word in (snumber~) main::$2 ← (signed word) main::w2#0 - (signed byte) $29 -Inversing boolean not [17] (bool~) print_sword::$1 ← (signed word) print_sword::w#3 >= (signed byte) 0 from [16] (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (signed byte) 0 -Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#22 (byte*) print_char_cursor#53 (byte*) print_screen#6 (byte*) print_line_cursor#20 (byte*) print_char_cursor#51 (byte*) print_screen#5 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#1 (byte*) print_line_cursor#11 (byte*) print_char_cursor#24 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#3 (byte*) print_char_cursor#27 (byte*) print_char_cursor#5 -Alias (byte*) print_char_cursor#46 = (byte*) print_char_cursor#52 -Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#5 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#4 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#22 (byte*) print_char_cursor#56 (byte*) print_screen#6 (byte*) print_line_cursor#20 (byte*) print_char_cursor#54 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#1 (byte*) print_line_cursor#11 (byte*) print_char_cursor#25 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 +Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#48 +Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#4 (signed word) print_sword::w#8 (signed word) print_sword::w#7 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#3 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#4 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#29 (byte*) print_char_cursor#6 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#6 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#7 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#30 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#32 (byte*) print_char_cursor#9 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#32 (byte*) print_char_cursor#33 (byte*) print_char_cursor#11 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#13 -Alias (byte*) print_line_cursor#12 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#14 (byte*) print_char_cursor#36 (byte*) print_line_cursor#4 (byte*) print_char_cursor#15 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#33 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#35 (byte*) print_char_cursor#12 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#14 +Alias (byte*) print_line_cursor#12 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#15 (byte*) print_char_cursor#38 (byte*) print_line_cursor#4 (byte*) print_char_cursor#16 Alias (signed word) main::w1#0 = (signed word) main::w1#3 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#37 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#39 Alias (signed word) main::w2#0 = (signed word~) main::$1 (signed word) main::w2#2 (signed word) main::w2#1 Alias (signed word) main::w1#1 = (signed word~) main::$2 (signed word) main::w1#7 (signed word) main::w1#6 (signed word) main::w1#5 (signed word) main::w1#4 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#23 (byte*) print_line_cursor#24 (byte*) print_line_cursor#21 Alias (byte) main::i#2 = (byte) main::i#5 (byte) main::i#6 (byte) main::i#4 (byte) main::i#3 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#40 +Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#40 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#41 +Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#42 Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#15 (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#41 (byte*) print_char_cursor#42 (byte*) print_char_cursor#21 +Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#43 (byte*) print_char_cursor#44 (byte*) print_char_cursor#22 Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#43 +Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#45 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#23 +Self Phi Eliminated (byte*) print_char_cursor#24 Self Phi Eliminated (byte*) print_line_cursor#12 Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#19 -Identical Phi Values (byte*) print_char_cursor#44 (byte*) print_char_cursor#19 -Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#44 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#29 -Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#46 (byte*) print_char_cursor#20 +Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#46 +Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#31 Identical Phi Values (word) print_word::w#1 (word) print_word::w#0 -Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_char_cursor#45 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#12 +Identical Phi Values (byte*) print_char_cursor#50 (byte*) print_char_cursor#49 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#13 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_screen#1 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#49 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#52 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#12 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_line_cursor#12 -Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_line_cursor#12 +Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#28 +Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#28 Identical Phi Values (byte*) print_line_cursor#14 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#14 -Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#20 +Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#21 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [18] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_cls::$1 [78] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) main::$7 [116] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 +Identical Phi Values (byte*) print_char_cursor#49 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#51 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [17] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) print_cls::$1 [82] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) main::$7 [120] if((byte) main::i#1!=rangelast(0,$a)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' +Constant (const byte) print_char::ch#1 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const signed word) main::w1#0 = $4d2 Constant (const byte) main::i#0 = 0 -Constant (const byte) print_char::ch#3 = ' ' +Constant (const byte) print_char::ch#4 = ' ' Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [114] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [116] if(main::i#1!=rangelast(0,$a)) goto main::@1 to (number) $b +Resolved ranged next value [118] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [120] if(main::i#1!=rangelast(0,$a)) goto main::@1 to (number) $b Adding number conversion cast (unumber) $b in if((byte) main::i#1!=(number) $b) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast $b Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $b Successful SSA optimization PassNFinalizeNumberTypeConversions -Constant right-side identified [32] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [33] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Successful SSA optimization Pass2ConstantIdentification Inlining constant with var siblings (const byte) print_char::ch#0 -Inlining constant with var siblings (const byte) print_char::ch#3 +Inlining constant with var siblings (const byte) print_char::ch#1 +Inlining constant with var siblings (const byte) print_char::ch#4 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const signed word) main::w1#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte*) print_line_cursor#0 -Constant inlined print_char::ch#3 = (byte) ' ' +Constant inlined print_char::ch#4 = (byte) ' ' Constant inlined print_cls::$0 = (byte*) 1024+(word) $3e8 +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_line_cursor#0 = (byte*) 1024 Constant inlined print_char::ch#0 = (byte) '-' Constant inlined main::i#0 = (byte) 0 @@ -599,7 +624,6 @@ Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined main::w1#0 = (signed word) $4d2 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting main::@8(between main::@7 and main::@1) Adding NOP phi() at start of @begin @@ -611,7 +635,7 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@6 Adding NOP phi() at start of print_ln::@2 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 Adding NOP phi() at start of print_cls @@ -619,50 +643,47 @@ Adding NOP phi() at start of print_cls::@2 CALL GRAPH Calls in [] to main:3 Calls in [main] to print_cls:7 print_sword:15 print_char:17 print_sword:21 print_ln:23 -Calls in [print_sword] to print_char:41 print_word:47 -Calls in [print_word] to print_byte:55 print_byte:59 -Calls in [print_byte] to print_char:67 print_char:72 +Calls in [print_sword] to print_char:41 print_word:45 print_char:49 +Calls in [print_word] to print_byte:58 print_byte:61 +Calls in [print_byte] to print_char:69 print_char:74 -Created 14 initial phi equivalence classes -Coalesced [13] print_sword::w#7 ← print_sword::w#1 -Coalesced [14] print_char_cursor#54 ← print_char_cursor#50 -Coalesced [16] print_char_cursor#60 ← print_char_cursor#12 -Coalesced [19] print_sword::w#8 ← print_sword::w#2 -Coalesced [20] print_char_cursor#55 ← print_char_cursor#12 +Created 12 initial phi equivalence classes +Coalesced [13] print_sword::w#9 ← print_sword::w#1 +Coalesced [14] print_char_cursor#57 ← print_char_cursor#53 +Coalesced [16] print_char_cursor#59 ← print_char_cursor#13 +Coalesced [19] print_sword::w#10 ← print_sword::w#2 +Coalesced [20] print_char_cursor#58 ← print_char_cursor#13 Coalesced [27] main::w1#8 ← main::w1#1 Not coalescing [28] print_char_cursor#64 ← print_line_cursor#1 Coalesced [29] print_line_cursor#27 ← print_line_cursor#1 Coalesced [30] main::i#7 ← main::i#1 Coalesced [31] print_line_cursor#25 ← print_line_cursor#19 Coalesced (already) [37] print_line_cursor#26 ← print_line_cursor#1 -Coalesced (already) [40] print_char_cursor#63 ← print_char_cursor#46 -Coalesced [43] print_sword::w#10 ← print_sword::w#0 -Coalesced [44] print_char_cursor#57 ← print_char_cursor#12 -Coalesced [50] print_sword::w#9 ← print_sword::w#3 -Coalesced (already) [51] print_char_cursor#56 ← print_char_cursor#46 -Coalesced [53] print_byte::b#4 ← print_byte::b#0 -Coalesced [54] print_char_cursor#58 ← print_char_cursor#45 -Coalesced [57] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [58] print_char_cursor#59 ← print_char_cursor#12 -Coalesced [65] print_char::ch#5 ← print_char::ch#1 -Coalesced (already) [66] print_char_cursor#61 ← print_char_cursor#48 -Coalesced [70] print_char::ch#6 ← print_char::ch#2 -Coalesced (already) [71] print_char_cursor#62 ← print_char_cursor#12 -Coalesced [86] print_cls::sc#3 ← print_cls::sc#1 +Coalesced (already) [40] print_char_cursor#63 ← print_char_cursor#47 +Coalesced [42] print_sword::w#12 ← print_sword::w#3 +Coalesced (already) [48] print_char_cursor#62 ← print_char_cursor#47 +Coalesced [51] print_sword::w#11 ← print_sword::w#0 +Coalesced [57] print_byte::b#4 ← print_byte::b#0 +Coalesced [60] print_byte::b#5 ← print_byte::b#1 +Coalesced [67] print_char::ch#6 ← print_char::ch#2 +Coalesced (already) [68] print_char_cursor#60 ← print_char_cursor#13 +Coalesced [72] print_char::ch#7 ← print_char::ch#3 +Coalesced (already) [73] print_char_cursor#61 ← print_char_cursor#13 +Coalesced [84] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 8 phi equivalence classes Culled Empty Block (label) @12 Culled Empty Block (label) @21 Culled Empty Block (label) main::@3 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@3 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @20 to @1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block main::@4 to main::@2 Renumbering block main::@5 to main::@3 Renumbering block main::@6 to main::@4 @@ -675,7 +696,8 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@4 Adding NOP phi() at start of print_ln -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of print_cls FINAL CONTROL FLOW GRAPH @@ -695,7 +717,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@6 [6] (byte) main::i#2 ← phi( main/(byte) 0 main::@6/(byte) main::i#1 ) [6] (byte*) print_line_cursor#19 ← phi( main/(byte*) 1024 main::@6/(byte*) print_line_cursor#1 ) - [6] (byte*) print_char_cursor#50 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#64 ) + [6] (byte*) print_char_cursor#53 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#64 ) [6] (signed word) main::w1#2 ← phi( main/(signed word) $4d2 main::@6/(signed word) main::w1#1 ) [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 @@ -730,78 +752,80 @@ print_ln: scope:[print_ln] from main::@4 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [22] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 - [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [25] return to:@return print_sword: scope:[print_sword] from main::@1 main::@3 - [26] (byte*) print_char_cursor#46 ← phi( main::@1/(byte*) print_char_cursor#50 main::@3/(byte*) print_char_cursor#12 ) + [26] (byte*) print_char_cursor#47 ← phi( main::@1/(byte*) print_char_cursor#53 main::@3/(byte*) print_char_cursor#13 ) [26] (signed word) print_sword::w#3 ← phi( main::@1/(signed word) print_sword::w#1 main::@3/(signed word) print_sword::w#2 ) - [27] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [28] phi() [29] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [30] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [31] (byte*) print_char_cursor#45 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 ) - [31] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 ) - [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - [33] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [30] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) + [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + [32] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [34] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [33] return to:@return -print_word: scope:[print_word] from print_sword::@1 - [35] (byte) print_byte::b#0 ← > (word) print_word::w#0 - [36] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [37] (byte) print_byte::b#1 ← < (word) print_word::w#0 - [38] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [39] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [40] (byte*) print_char_cursor#48 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#12 ) - [40] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [43] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [46] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [47] return - to:@return -print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@2 - [48] (byte*) print_char_cursor#34 ← phi( main::@2/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#48 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 ) - [48] (byte) print_char::ch#4 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [49] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 - [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#34 +print_sword::@1: scope:[print_sword] from print_sword + [34] phi() + [35] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 + to:print_sword::@2 +print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [37] (byte*) print_char_cursor#36 ← phi( main::@2/(byte*) print_char_cursor#13 print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#47 print_sword::@3/(byte*) print_char_cursor#47 ) + [37] (byte) print_char::ch#5 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 + [39] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#36 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [51] return + [40] return + to:@return +print_word: scope:[print_word] from print_sword::@2 + [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 + [42] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 + [44] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [45] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [46] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [49] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [51] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [52] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [53] return to:@return print_cls: scope:[print_cls] from main - [52] phi() + [54] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [53] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [54] *((byte*) print_cls::sc#2) ← (byte) ' ' - [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [56] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [55] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [56] *((byte*) print_cls::sc#2) ← (byte) ' ' + [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [58] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [57] return + [59] return to:@return @@ -824,16 +848,14 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#2 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#1 4.0 (byte) print_char::ch#2 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#3 4.0 +(byte) print_char::ch#5 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 5.240000000000001 -(byte*) print_char_cursor#34 10.5 -(byte*) print_char_cursor#45 2.0 -(byte*) print_char_cursor#46 8.666666666666666 -(byte*) print_char_cursor#48 2.0 -(byte*) print_char_cursor#50 5.5 +(byte*) print_char_cursor#13 4.03125 +(byte*) print_char_cursor#36 11.5 +(byte*) print_char_cursor#47 6.5 +(byte*) print_char_cursor#53 5.5 (byte*~) print_char_cursor#64 22.0 (void()) print_cls() (byte*) print_cls::sc @@ -851,8 +873,8 @@ VARIABLE REGISTER WEIGHTS (signed word) print_sword::w#0 4.0 (signed word) print_sword::w#1 22.0 (signed word) print_sword::w#2 22.0 -(signed word) print_sword::w#3 7.0 -(signed word) print_sword::w#4 4.0 +(signed word) print_sword::w#3 4.666666666666666 +(signed word) print_sword::w#5 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 2.0 @@ -861,10 +883,10 @@ Initial phi equivalence classes [ main::w1#2 main::w1#1 ] [ main::i#2 main::i#1 ] [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +[ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +[ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] [ print_cls::sc#2 print_cls::sc#1 ] Added variable main::w2#0 to zero page equivalence class [ main::w2#0 ] Added variable print_word::w#0 to zero page equivalence class [ print_word::w#0 ] @@ -874,10 +896,10 @@ Complete equivalence classes [ main::w1#2 main::w1#1 ] [ main::i#2 main::i#1 ] [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +[ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +[ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] [ print_cls::sc#2 print_cls::sc#1 ] [ main::w2#0 ] [ print_word::w#0 ] @@ -886,10 +908,10 @@ Complete equivalence classes Allocated zp ZP_WORD:2 [ main::w1#2 main::w1#1 ] Allocated zp ZP_BYTE:4 [ main::i#2 main::i#1 ] Allocated zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -Allocated zp ZP_WORD:7 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -Allocated zp ZP_BYTE:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated zp ZP_BYTE:10 [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -Allocated zp ZP_WORD:11 [ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] +Allocated zp ZP_WORD:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Allocated zp ZP_BYTE:9 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Allocated zp ZP_WORD:10 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] +Allocated zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_WORD:15 [ main::w2#0 ] Allocated zp ZP_WORD:17 [ print_word::w#0 ] @@ -905,7 +927,7 @@ INITIAL ASM .pc = $80d "Program" //SEG2 Global Constants & labels .label print_line_cursor = 5 - .label print_char_cursor = $b + .label print_char_cursor = $a //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -928,7 +950,7 @@ main: { .label w1 = 2 .label i = 4 //SEG11 [5] call print_cls - //SEG12 [52] phi from main to print_cls [phi:main->print_cls] + //SEG12 [54] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -941,7 +963,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG16 [6] phi (byte*) print_char_cursor#50 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#53 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -978,7 +1000,7 @@ main: { //SEG22 [10] call print_sword //SEG23 [26] phi from main::@1 to print_sword [phi:main::@1->print_sword] print_sword_from_b1: - //SEG24 [26] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#50 [phi:main::@1->print_sword#0] -- register_copy + //SEG24 [26] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#53 [phi:main::@1->print_sword#0] -- register_copy //SEG25 [26] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:main::@1->print_sword#1] -- register_copy jsr print_sword //SEG26 [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -987,10 +1009,10 @@ main: { //SEG27 main::@2 b2: //SEG28 [12] call print_char - //SEG29 [48] phi from main::@2 to print_char [phi:main::@2->print_char] + //SEG29 [37] phi from main::@2 to print_char [phi:main::@2->print_char] print_char_from_b2: - //SEG30 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#12 [phi:main::@2->print_char#0] -- register_copy - //SEG31 [48] phi (byte) print_char::ch#4 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuz1=vbuc1 + //SEG30 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:main::@2->print_char#0] -- register_copy + //SEG31 [37] phi (byte) print_char::ch#5 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char @@ -1005,7 +1027,7 @@ main: { //SEG34 [14] call print_sword //SEG35 [26] phi from main::@3 to print_sword [phi:main::@3->print_sword] print_sword_from_b3: - //SEG36 [26] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:main::@3->print_sword#0] -- register_copy + //SEG36 [26] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#13 [phi:main::@3->print_sword#0] -- register_copy //SEG37 [26] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:main::@3->print_sword#1] -- register_copy jsr print_sword //SEG38 [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -1042,7 +1064,7 @@ main: { b1_from_b6: //SEG50 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy //SEG51 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG52 [6] phi (byte*) print_char_cursor#50 = (byte*~) print_char_cursor#64 [phi:main::@6->main::@1#2] -- register_copy + //SEG52 [6] phi (byte*) print_char_cursor#53 = (byte*~) print_char_cursor#64 [phi:main::@6->main::@1#2] -- register_copy //SEG53 [6] phi (signed word) main::w1#2 = (signed word) main::w1#1 [phi:main::@6->main::@1#3] -- register_copy jmp b1 } @@ -1064,7 +1086,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG59 [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG59 [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1084,26 +1106,58 @@ print_ln: { // print_sword(signed word zeropage(7) w) print_sword: { .label w = 7 - //SEG63 [27] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG63 [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG64 [28] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG65 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG64 [28] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG65 print_sword::@3 + b3: //SEG66 [29] call print_char - //SEG67 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG68 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG69 [48] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG67 [37] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG68 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#47 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG69 [37] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG70 [30] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG71 [30] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG72 print_sword::@2 + b2: + //SEG73 [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG74 [32] call print_word + jsr print_word + jmp breturn + //SEG75 print_sword::@return + breturn: + //SEG76 [33] return + rts + //SEG77 [34] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG78 print_sword::@1 + b1: + //SEG79 [35] call print_char + //SEG80 [37] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG81 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#47 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG82 [37] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG70 print_sword::@3 - b3: - //SEG71 [30] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG83 print_sword::@4 + b4: + //SEG84 [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -1111,154 +1165,133 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG72 [31] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG73 [31] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG74 [31] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG75 print_sword::@1 - b1: - //SEG76 [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG77 [33] call print_word - jsr print_word + jmp b2_from_b4 +} +//SEG85 print_char +// Print a single char +// print_char(byte zeropage(9) ch) +print_char: { + .label ch = 9 + //SEG86 [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 + lda ch + ldy #0 + sta (print_char_cursor),y + //SEG87 [39] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#36 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: jmp breturn - //SEG78 print_sword::@return + //SEG88 print_char::@return breturn: - //SEG79 [34] return + //SEG89 [40] return rts } -//SEG80 print_word +//SEG90 print_word // Print a word as HEX // print_word(word zeropage($11) w) print_word: { .label w = $11 - //SEG81 [35] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG91 [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG82 [36] call print_byte - //SEG83 [40] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG92 [42] call print_byte + //SEG93 [46] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG84 [40] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#45 [phi:print_word->print_byte#0] -- register_copy - //SEG85 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG94 [46] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte jmp b1 - //SEG86 print_word::@1 + //SEG95 print_word::@1 b1: - //SEG87 [37] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG96 [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG88 [38] call print_byte - //SEG89 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG97 [44] call print_byte + //SEG98 [46] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG90 [40] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG91 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG99 [46] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte jmp breturn - //SEG92 print_word::@return + //SEG100 print_word::@return breturn: - //SEG93 [39] return + //SEG101 [45] return rts } -//SEG94 print_byte +//SEG102 print_byte // Print a byte as HEX -// print_byte(byte zeropage(9) b) +// print_byte(byte zeropage($c) b) print_byte: { .label _0 = $13 .label _2 = $14 - .label b = 9 - //SEG95 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + .label b = $c + //SEG103 [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG96 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG104 [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG97 [43] call print_char - //SEG98 [48] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG105 [49] call print_char + //SEG106 [37] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG99 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#48 [phi:print_byte->print_char#0] -- register_copy - //SEG100 [48] phi (byte) print_char::ch#4 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG107 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG108 [37] phi (byte) print_char::ch#5 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG101 print_byte::@1 + //SEG109 print_byte::@1 b1: - //SEG102 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG110 [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG103 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG111 [51] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG104 [46] call print_char - //SEG105 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG112 [52] call print_char + //SEG113 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG106 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG107 [48] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG114 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG115 [37] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG108 print_byte::@return + //SEG116 print_byte::@return breturn: - //SEG109 [47] return + //SEG117 [53] return rts } -//SEG110 print_char -// Print a single char -// print_char(byte zeropage($a) ch) -print_char: { - .label ch = $a - //SEG111 [49] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 - lda ch - ldy #0 - sta (print_char_cursor),y - //SEG112 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#34 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - jmp breturn - //SEG113 print_char::@return - breturn: - //SEG114 [51] return - rts -} -//SEG115 print_cls +//SEG118 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $d - //SEG116 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG119 [55] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG117 [53] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG120 [55] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG118 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG121 [55] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG119 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG122 [55] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG120 print_cls::@1 + //SEG123 print_cls::@1 b1: - //SEG121 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG124 [56] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG122 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG125 [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG123 [56] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG126 [58] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -1266,60 +1299,60 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG124 print_cls::@return + //SEG127 print_cls::@return breturn: - //SEG125 [57] return + //SEG128 [59] return rts } -//SEG126 File Data +//SEG129 File Data print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w2#0 ] ( main:2 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w2#0 ] ) always clobbers reg byte a +Statement [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::i#2 main::i#1 ] -Statement [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ( main:2 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ) always clobbers reg byte a -Statement [9] (signed word) print_sword::w#1 ← (signed word) main::w1#1 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ( main:2 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ) always clobbers reg byte a -Statement [13] (signed word) print_sword::w#2 ← (signed word) main::w2#0 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#12 ] ( main:2 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ) always clobbers reg byte a +Statement [9] (signed word) print_sword::w#1 ← (signed word) main::w1#1 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ) always clobbers reg byte a +Statement [13] (signed word) print_sword::w#2 ← (signed word) main::w2#0 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ( main:2 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ) always clobbers reg byte a Statement [20] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ main::w1#1 print_char_cursor#64 print_line_cursor#1 main::i#1 ] ( main:2 [ main::w1#1 print_char_cursor#64 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [27] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 [ print_sword::w#3 print_char_cursor#46 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#46 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#46 ] ) always clobbers reg byte a -Statement [30] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#12 print_sword::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#45 print_word::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#45 print_word::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#45 print_word::w#0 ] ) always clobbers reg byte a -Statement [35] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#45 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:10::print_word:33 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#45 print_word::w#0 print_byte::b#0 ] main:2::print_sword:14::print_word:33 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#45 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [37] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:10::print_word:33 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_sword:14::print_word:33 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#48 print_byte::$0 ] ( main:2::print_sword:10::print_word:33::print_byte:36 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#48 print_byte::$0 ] main:2::print_sword:14::print_word:33::print_byte:36 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#48 print_byte::$0 ] main:2::print_sword:10::print_word:33::print_byte:38 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#48 print_byte::$0 ] main:2::print_sword:14::print_word:33::print_byte:38 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#48 print_byte::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:10::print_word:33::print_byte:36 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:14::print_word:33::print_byte:36 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:10::print_word:33::print_byte:38 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:14::print_word:33::print_byte:38 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [49] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 [ print_char_cursor#34 ] ( main:2::print_char:12 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#34 ] main:2::print_sword:10::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#34 ] main:2::print_sword:14::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#34 ] main:2::print_sword:10::print_word:33::print_byte:36::print_char:43 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:14::print_word:33::print_byte:36::print_char:43 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:10::print_word:33::print_byte:38::print_char:43 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:14::print_word:33::print_byte:38::print_char:43 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:10::print_word:33::print_byte:36::print_char:46 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#34 ] main:2::print_sword:14::print_word:33::print_byte:36::print_char:46 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#34 ] main:2::print_sword:10::print_word:33::print_byte:38::print_char:46 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#34 ] main:2::print_sword:14::print_word:33::print_byte:38::print_char:46 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#34 ] ) always clobbers reg byte y +Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_sword::w#3 print_char_cursor#47 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#47 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#47 ] ) always clobbers reg byte a +Statement [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_sword::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 [ print_char_cursor#36 ] ( main:2::print_char:12 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] main:2::print_sword:10::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:14::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:10::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:14::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#36 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ main::i#2 main::i#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [54] *((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 [56] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w2#0 ] ( main:2 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w2#0 ] ) always clobbers reg byte a -Statement [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ( main:2 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ) always clobbers reg byte a -Statement [9] (signed word) print_sword::w#1 ← (signed word) main::w1#1 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ( main:2 [ print_char_cursor#50 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ) always clobbers reg byte a -Statement [13] (signed word) print_sword::w#2 ← (signed word) main::w2#0 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#12 ] ( main:2 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#12 ] ) always clobbers reg byte a +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:10::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] main:2::print_sword:14::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:10::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#1 ] main:2::print_sword:14::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [56] *((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 [58] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w2#0 ] ) always clobbers reg byte a +Statement [8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 ] ) always clobbers reg byte a +Statement [9] (signed word) print_sword::w#1 ← (signed word) main::w1#1 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ( main:2 [ print_char_cursor#53 print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#1 ] ) always clobbers reg byte a +Statement [13] (signed word) print_sword::w#2 ← (signed word) main::w2#0 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ( main:2 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#2 print_char_cursor#13 ] ) always clobbers reg byte a Statement [20] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#1 [ main::w1#1 print_char_cursor#64 print_line_cursor#1 main::i#1 ] ( main:2 [ main::w1#1 print_char_cursor#64 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [27] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 [ print_sword::w#3 print_char_cursor#46 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#46 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#46 ] ) always clobbers reg byte a -Statement [30] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#12 print_sword::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#45 print_word::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#45 print_word::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#45 print_word::w#0 ] ) always clobbers reg byte a -Statement [35] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#45 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:10::print_word:33 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#45 print_word::w#0 print_byte::b#0 ] main:2::print_sword:14::print_word:33 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#45 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a -Statement [37] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:10::print_word:33 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_sword:14::print_word:33 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#48 print_byte::$0 ] ( main:2::print_sword:10::print_word:33::print_byte:36 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#48 print_byte::$0 ] main:2::print_sword:14::print_word:33::print_byte:36 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#48 print_byte::$0 ] main:2::print_sword:10::print_word:33::print_byte:38 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#48 print_byte::$0 ] main:2::print_sword:14::print_word:33::print_byte:38 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#48 print_byte::$0 ] ) always clobbers reg byte a -Statement [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:10::print_word:33::print_byte:36 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:14::print_word:33::print_byte:36 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:10::print_word:33::print_byte:38 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:14::print_word:33::print_byte:38 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [49] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 [ print_char_cursor#34 ] ( main:2::print_char:12 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#34 ] main:2::print_sword:10::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#34 ] main:2::print_sword:14::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#34 ] main:2::print_sword:10::print_word:33::print_byte:36::print_char:43 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:14::print_word:33::print_byte:36::print_char:43 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:10::print_word:33::print_byte:38::print_char:43 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:14::print_word:33::print_byte:38::print_char:43 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#34 ] main:2::print_sword:10::print_word:33::print_byte:36::print_char:46 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#34 ] main:2::print_sword:14::print_word:33::print_byte:36::print_char:46 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#34 ] main:2::print_sword:10::print_word:33::print_byte:38::print_char:46 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#34 ] main:2::print_sword:14::print_word:33::print_byte:38::print_char:46 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#34 ] ) always clobbers reg byte y -Statement [54] *((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 [56] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:16 [ main::i#2 main::w1#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_sword::w#3 print_char_cursor#47 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#47 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#47 ] ) always clobbers reg byte a +Statement [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:10 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_sword::w#0 ] main:2::print_sword:14 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 [ print_char_cursor#36 ] ( main:2::print_char:12 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] main:2::print_sword:10::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:14::print_char:29 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:10::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:14::print_char:35 [ print_line_cursor#19 main::i#2 main::w1#1 print_sword::w#3 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:42::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:44::print_char:49 [ print_line_cursor#19 main::i#2 main::w1#1 print_byte::b#2 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:42::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#36 ] main:2::print_sword:10::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#36 ] main:2::print_sword:14::print_word:32::print_byte:44::print_char:52 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#36 ] ) always clobbers reg byte y +Statement [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ( main:2::print_sword:10::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] main:2::print_sword:14::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a +Statement [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_sword:10::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#1 ] main:2::print_sword:14::print_word:32 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_sword:10::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:14::print_word:32::print_byte:42 [ print_line_cursor#19 main::i#2 main::w1#1 print_word::w#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:10::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 main::w2#0 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:14::print_word:32::print_byte:44 [ print_line_cursor#19 main::i#2 main::w1#1 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [56] *((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 [58] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) 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_WORD:2 [ main::w1#2 main::w1#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_BYTE:4 [ main::i#2 main::i#1 ] : zp ZP_BYTE:4 , reg byte x , Potential registers zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp ZP_WORD:5 , -Potential registers zp ZP_WORD:7 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] : zp ZP_WORD:7 , -Potential registers zp ZP_BYTE:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:9 , reg byte x , -Potential registers zp ZP_BYTE:10 [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:11 [ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] : zp ZP_WORD:11 , +Potential registers zp ZP_WORD:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] : zp ZP_WORD:7 , +Potential registers zp ZP_BYTE:9 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:10 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] : zp ZP_WORD:10 , +Potential registers zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:12 , reg byte x , Potential registers zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:13 , Potential registers zp ZP_WORD:15 [ main::w2#0 ] : zp ZP_WORD:15 , Potential registers zp ZP_WORD:17 [ print_word::w#0 ] : zp ZP_WORD:17 , @@ -1327,30 +1360,30 @@ Potential registers zp ZP_BYTE:19 [ print_byte::$0 ] : zp ZP_BYTE:19 , reg byte Potential registers zp ZP_BYTE:20 [ print_byte::$2 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 251.61: zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 55.91: zp ZP_WORD:11 [ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] -Uplift Scope [print_sword] 59: zp ZP_WORD:7 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Uplift Scope [] 251.61: zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 49.53: zp ZP_WORD:10 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] +Uplift Scope [print_sword] 56.67: zp ZP_WORD:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] Uplift Scope [main] 24.75: zp ZP_WORD:2 [ main::w1#2 main::w1#1 ] 13: zp ZP_BYTE:4 [ main::i#2 main::i#1 ] 5.5: zp ZP_WORD:15 [ main::w2#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [print_byte] 10: zp ZP_BYTE:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:19 [ print_byte::$0 ] 4: zp ZP_BYTE:20 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:10 [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:19 [ print_byte::$0 ] 4: zp ZP_BYTE:20 [ print_byte::$2 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:9 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] Uplift Scope [print_word] 2: zp ZP_WORD:17 [ print_word::w#0 ] Uplift Scope [print_ln] -Uplifting [] best 6485 combination zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:11 [ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] -Uplifting [print_sword] best 6485 combination zp ZP_WORD:7 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -Uplifting [main] best 6395 combination zp ZP_WORD:2 [ main::w1#2 main::w1#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:15 [ main::w2#0 ] -Uplifting [print_cls] best 6395 combination zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 6387 combination zp ZP_BYTE:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 6372 combination reg byte a [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -Uplifting [print_word] best 6372 combination zp ZP_WORD:17 [ print_word::w#0 ] -Uplifting [print_ln] best 6372 combination -Attempting to uplift remaining variables inzp ZP_BYTE:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 6372 combination zp ZP_BYTE:9 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:17 [ print_word::w#0 ] ] - score: 1 +Uplifting [] best 6502 combination zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:10 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] +Uplifting [print_sword] best 6502 combination zp ZP_WORD:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplifting [main] best 6412 combination zp ZP_WORD:2 [ main::w1#2 main::w1#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:15 [ main::w2#0 ] +Uplifting [print_cls] best 6412 combination zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 6404 combination zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_char] best 6386 combination reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_word] best 6386 combination zp ZP_WORD:17 [ print_word::w#0 ] +Uplifting [print_ln] best 6386 combination +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Uplifting [print_byte] best 6386 combination zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp ZP_WORD:17 [ print_word::w#0 ] ] - score: 1 Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#0 ] -Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] +Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_word::w#0 ] +Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] +Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated (was zp ZP_WORD:13) zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] Allocated (was zp ZP_WORD:15) zp ZP_WORD:13 [ main::w2#0 ] @@ -1363,7 +1396,7 @@ ASSEMBLER BEFORE OPTIMIZATION .pc = $80d "Program" //SEG2 Global Constants & labels .label print_line_cursor = 4 - .label print_char_cursor = 9 + .label print_char_cursor = 8 //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -1385,7 +1418,7 @@ main: { .label w2 = $d .label w1 = 2 //SEG11 [5] call print_cls - //SEG12 [52] phi from main to print_cls [phi:main->print_cls] + //SEG12 [54] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -1397,7 +1430,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG16 [6] phi (byte*) print_char_cursor#50 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#53 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -1434,7 +1467,7 @@ main: { //SEG22 [10] call print_sword //SEG23 [26] phi from main::@1 to print_sword [phi:main::@1->print_sword] print_sword_from_b1: - //SEG24 [26] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#50 [phi:main::@1->print_sword#0] -- register_copy + //SEG24 [26] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#53 [phi:main::@1->print_sword#0] -- register_copy //SEG25 [26] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:main::@1->print_sword#1] -- register_copy jsr print_sword //SEG26 [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -1443,10 +1476,10 @@ main: { //SEG27 main::@2 b2: //SEG28 [12] call print_char - //SEG29 [48] phi from main::@2 to print_char [phi:main::@2->print_char] + //SEG29 [37] phi from main::@2 to print_char [phi:main::@2->print_char] print_char_from_b2: - //SEG30 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#12 [phi:main::@2->print_char#0] -- register_copy - //SEG31 [48] phi (byte) print_char::ch#4 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuaa=vbuc1 + //SEG30 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:main::@2->print_char#0] -- register_copy + //SEG31 [37] phi (byte) print_char::ch#5 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b3 @@ -1460,7 +1493,7 @@ main: { //SEG34 [14] call print_sword //SEG35 [26] phi from main::@3 to print_sword [phi:main::@3->print_sword] print_sword_from_b3: - //SEG36 [26] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:main::@3->print_sword#0] -- register_copy + //SEG36 [26] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#13 [phi:main::@3->print_sword#0] -- register_copy //SEG37 [26] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:main::@3->print_sword#1] -- register_copy jsr print_sword //SEG38 [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -1496,7 +1529,7 @@ main: { b1_from_b6: //SEG50 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy //SEG51 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG52 [6] phi (byte*) print_char_cursor#50 = (byte*~) print_char_cursor#64 [phi:main::@6->main::@1#2] -- register_copy + //SEG52 [6] phi (byte*) print_char_cursor#53 = (byte*~) print_char_cursor#64 [phi:main::@6->main::@1#2] -- register_copy //SEG53 [6] phi (signed word) main::w1#2 = (signed word) main::w1#1 [phi:main::@6->main::@1#3] -- register_copy jmp b1 } @@ -1518,7 +1551,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG59 [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG59 [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1538,25 +1571,52 @@ print_ln: { // print_sword(signed word zeropage(6) w) print_sword: { .label w = 6 - //SEG63 [27] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG63 [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG64 [28] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: - jmp b2 - //SEG65 print_sword::@2 - b2: + bmi b1_from_print_sword + //SEG64 [28] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG65 print_sword::@3 + b3: //SEG66 [29] call print_char - //SEG67 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG68 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG69 [48] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG67 [37] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG68 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#47 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG69 [37] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG70 [30] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG71 [30] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + jmp b2 + //SEG72 print_sword::@2 + b2: + //SEG73 [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + //SEG74 [32] call print_word + jsr print_word + jmp breturn + //SEG75 print_sword::@return + breturn: + //SEG76 [33] return + rts + //SEG77 [34] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG78 print_sword::@1 + b1: + //SEG79 [35] call print_char + //SEG80 [37] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG81 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#47 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG82 [37] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG70 print_sword::@3 - b3: - //SEG71 [30] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG83 print_sword::@4 + b4: + //SEG84 [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -1564,142 +1624,125 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG72 [31] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG73 [31] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG74 [31] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG75 print_sword::@1 - b1: - //SEG76 [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - //SEG77 [33] call print_word - jsr print_word - jmp breturn - //SEG78 print_sword::@return - breturn: - //SEG79 [34] return - rts + jmp b2_from_b4 } -//SEG80 print_word -// Print a word as HEX -// print_word(word zeropage(6) w) -print_word: { - .label w = 6 - //SEG81 [35] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 - lda w+1 - sta print_byte.b - //SEG82 [36] call print_byte - //SEG83 [40] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG84 [40] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#45 [phi:print_word->print_byte#0] -- register_copy - //SEG85 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - //SEG86 print_word::@1 - b1: - //SEG87 [37] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 - lda w - sta print_byte.b - //SEG88 [38] call print_byte - //SEG89 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG90 [40] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG91 [40] 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 - //SEG92 print_word::@return - breturn: - //SEG93 [39] return - rts -} -//SEG94 print_byte -// Print a byte as HEX -// print_byte(byte zeropage(8) b) -print_byte: { - .label b = 8 - //SEG95 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 - lda b - lsr - lsr - lsr - lsr - //SEG96 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - //SEG97 [43] call print_char - //SEG98 [48] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - //SEG99 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#48 [phi:print_byte->print_char#0] -- register_copy - //SEG100 [48] phi (byte) print_char::ch#4 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - //SEG101 print_byte::@1 - b1: - //SEG102 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 - lda #$f - and b - //SEG103 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - //SEG104 [46] call print_char - //SEG105 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - //SEG106 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG107 [48] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - //SEG108 print_byte::@return - breturn: - //SEG109 [47] return - rts -} -//SEG110 print_char +//SEG85 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG111 [49] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG86 [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG112 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#34 -- pbuz1=_inc_pbuz1 + //SEG87 [39] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#36 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG113 print_char::@return + //SEG88 print_char::@return breturn: - //SEG114 [51] return + //SEG89 [40] return rts } -//SEG115 print_cls +//SEG90 print_word +// Print a word as HEX +// print_word(word zeropage(6) w) +print_word: { + .label w = 6 + //SEG91 [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte.b + //SEG92 [42] call print_byte + //SEG93 [46] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG94 [46] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy + jsr print_byte + jmp b1 + //SEG95 print_word::@1 + b1: + //SEG96 [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + lda w + sta print_byte.b + //SEG97 [44] call print_byte + //SEG98 [46] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG99 [46] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy + jsr print_byte + jmp breturn + //SEG100 print_word::@return + breturn: + //SEG101 [45] return + rts +} +//SEG102 print_byte +// Print a byte as HEX +// print_byte(byte zeropage($a) b) +print_byte: { + .label b = $a + //SEG103 [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + lda b + lsr + lsr + lsr + lsr + //SEG104 [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + //SEG105 [49] call print_char + //SEG106 [37] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG107 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG108 [37] phi (byte) print_char::ch#5 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG109 print_byte::@1 + b1: + //SEG110 [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and b + //SEG111 [51] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + //SEG112 [52] call print_char + //SEG113 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG114 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG115 [37] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG116 print_byte::@return + breturn: + //SEG117 [53] return + rts +} +//SEG118 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $b - //SEG116 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG119 [55] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG117 [53] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG120 [55] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG118 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG121 [55] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG119 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG122 [55] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG120 print_cls::@1 + //SEG123 print_cls::@1 b1: - //SEG121 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG124 [56] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG122 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG125 [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG123 [56] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG126 [58] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -1707,12 +1750,12 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG124 print_cls::@return + //SEG127 print_cls::@return breturn: - //SEG125 [57] return + //SEG128 [59] return rts } -//SEG126 File Data +//SEG129 File Data print_hextab: .text "0123456789abcdef" ASSEMBLER OPTIMIZATIONS @@ -1726,21 +1769,23 @@ Removing instruction jmp b5 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 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 Succesful ASM optimization Pass5NextJumpElimination Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction b1_from_bbegin: @@ -1753,10 +1798,12 @@ Removing instruction b4_from_b3: Removing instruction print_ln_from_b4: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: +Removing instruction print_char_from_b1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bend: @@ -1771,9 +1818,10 @@ Removing instruction b5: Removing instruction breturn: Removing instruction b1_from_b6: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: +Removing instruction breturn: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -1782,7 +1830,6 @@ Removing instruction print_char_from_print_byte: Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: -Removing instruction breturn: Removing instruction b1_from_print_cls: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination @@ -1820,23 +1867,21 @@ FINAL SYMBOL TABLE (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp ZP_BYTE:8 4.0 -(byte) print_byte::b#1 b zp ZP_BYTE:8 4.0 -(byte) print_byte::b#2 b zp ZP_BYTE:8 2.0 +(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0 +(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0 +(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#5 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:9 5.240000000000001 -(byte*) print_char_cursor#34 print_char_cursor zp ZP_WORD:9 10.5 -(byte*) print_char_cursor#45 print_char_cursor zp ZP_WORD:9 2.0 -(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:9 8.666666666666666 -(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:9 2.0 -(byte*) print_char_cursor#50 print_char_cursor zp ZP_WORD:9 5.5 -(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:9 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:8 4.03125 +(byte*) print_char_cursor#36 print_char_cursor zp ZP_WORD:8 11.5 +(byte*) print_char_cursor#47 print_char_cursor zp ZP_WORD:8 6.5 +(byte*) print_char_cursor#53 print_char_cursor zp ZP_WORD:8 5.5 +(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:8 22.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -1857,13 +1902,14 @@ FINAL SYMBOL TABLE (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:6 4.0 (signed word) print_sword::w#1 w zp ZP_WORD:6 22.0 (signed word) print_sword::w#2 w zp ZP_WORD:6 22.0 -(signed word) print_sword::w#3 w zp ZP_WORD:6 7.0 -(signed word) print_sword::w#4 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#3 w zp ZP_WORD:6 4.666666666666666 +(signed word) print_sword::w#5 w zp ZP_WORD:6 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -1873,10 +1919,10 @@ FINAL SYMBOL TABLE zp ZP_WORD:2 [ main::w1#2 main::w1#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#0 ] -zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:9 [ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] +zp ZP_WORD:6 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_word::w#0 ] +reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:8 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] +zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:13 [ main::w2#0 ] reg byte a [ print_byte::$0 ] @@ -1884,7 +1930,7 @@ reg byte a [ print_byte::$2 ] FINAL ASSEMBLER -Score: 5505 +Score: 5516 //SEG0 File Comments // Tests subtracting bytes from signed words @@ -1894,7 +1940,7 @@ Score: 5505 .pc = $80d "Program" //SEG2 Global Constants & labels .label print_line_cursor = 4 - .label print_char_cursor = 9 + .label print_char_cursor = 8 //SEG3 @begin //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] //SEG5 @1 @@ -1907,7 +1953,7 @@ main: { .label w2 = $d .label w1 = 2 //SEG11 [5] call print_cls - //SEG12 [52] phi from main to print_cls [phi:main->print_cls] + //SEG12 [54] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 [6] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 @@ -1917,7 +1963,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG16 [6] phi (byte*) print_char_cursor#50 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG16 [6] phi (byte*) print_char_cursor#53 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -1952,15 +1998,15 @@ main: { sta print_sword.w+1 //SEG22 [10] call print_sword //SEG23 [26] phi from main::@1 to print_sword [phi:main::@1->print_sword] - //SEG24 [26] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#50 [phi:main::@1->print_sword#0] -- register_copy + //SEG24 [26] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#53 [phi:main::@1->print_sword#0] -- register_copy //SEG25 [26] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:main::@1->print_sword#1] -- register_copy jsr print_sword //SEG26 [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG27 main::@2 //SEG28 [12] call print_char - //SEG29 [48] phi from main::@2 to print_char [phi:main::@2->print_char] - //SEG30 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#12 [phi:main::@2->print_char#0] -- register_copy - //SEG31 [48] phi (byte) print_char::ch#4 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuaa=vbuc1 + //SEG29 [37] phi from main::@2 to print_char [phi:main::@2->print_char] + //SEG30 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:main::@2->print_char#0] -- register_copy + //SEG31 [37] phi (byte) print_char::ch#5 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG32 main::@3 @@ -1971,7 +2017,7 @@ main: { sta print_sword.w+1 //SEG34 [14] call print_sword //SEG35 [26] phi from main::@3 to print_sword [phi:main::@3->print_sword] - //SEG36 [26] phi (byte*) print_char_cursor#46 = (byte*) print_char_cursor#12 [phi:main::@3->print_sword#0] -- register_copy + //SEG36 [26] phi (byte*) print_char_cursor#47 = (byte*) print_char_cursor#13 [phi:main::@3->print_sword#0] -- register_copy //SEG37 [26] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:main::@3->print_sword#1] -- register_copy jsr print_sword //SEG38 [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -1998,7 +2044,7 @@ main: { //SEG49 [6] phi from main::@6 to main::@1 [phi:main::@6->main::@1] //SEG50 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy //SEG51 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG52 [6] phi (byte*) print_char_cursor#50 = (byte*~) print_char_cursor#64 [phi:main::@6->main::@1#2] -- register_copy + //SEG52 [6] phi (byte*) print_char_cursor#53 = (byte*~) print_char_cursor#64 [phi:main::@6->main::@1#2] -- register_copy //SEG53 [6] phi (signed word) main::w1#2 = (signed word) main::w1#1 [phi:main::@6->main::@1#3] -- register_copy jmp b1 } @@ -2017,7 +2063,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG59 [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG59 [24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -2035,19 +2081,38 @@ print_ln: { // print_sword(signed word zeropage(6) w) print_sword: { .label w = 6 - //SEG63 [27] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG63 [27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG64 [28] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG65 print_sword::@2 + bmi b1 + //SEG64 [28] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG65 print_sword::@3 //SEG66 [29] call print_char - //SEG67 [48] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG68 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#46 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG69 [48] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG67 [37] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG68 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#47 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG69 [37] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG70 [30] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG71 [30] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG72 print_sword::@2 + b2: + //SEG73 [31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + //SEG74 [32] call print_word + jsr print_word + //SEG75 print_sword::@return + //SEG76 [33] return + rts + //SEG77 [34] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG78 print_sword::@1 + b1: + //SEG79 [35] call print_char + //SEG80 [37] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG81 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#47 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG82 [37] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG70 print_sword::@3 - //SEG71 [30] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + //SEG83 print_sword::@4 + //SEG84 [36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -2055,129 +2120,117 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG72 [31] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG73 [31] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#46 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG74 [31] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG75 print_sword::@1 - b1: - //SEG76 [32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 - //SEG77 [33] call print_word - jsr print_word - //SEG78 print_sword::@return - //SEG79 [34] return + jmp b2 +} +//SEG85 print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + //SEG86 [38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + //SEG87 [39] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#36 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: + //SEG88 print_char::@return + //SEG89 [40] return rts } -//SEG80 print_word +//SEG90 print_word // Print a word as HEX // print_word(word zeropage(6) w) print_word: { .label w = 6 - //SEG81 [35] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 + //SEG91 [41] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG82 [36] call print_byte - //SEG83 [40] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG84 [40] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#45 [phi:print_word->print_byte#0] -- register_copy - //SEG85 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG92 [42] call print_byte + //SEG93 [46] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG94 [46] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte - //SEG86 print_word::@1 - //SEG87 [37] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 + //SEG95 print_word::@1 + //SEG96 [43] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG88 [38] call print_byte - //SEG89 [40] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG90 [40] phi (byte*) print_char_cursor#48 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG91 [40] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG97 [44] call print_byte + //SEG98 [46] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG99 [46] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte - //SEG92 print_word::@return - //SEG93 [39] return + //SEG100 print_word::@return + //SEG101 [45] return rts } -//SEG94 print_byte +//SEG102 print_byte // Print a byte as HEX -// print_byte(byte zeropage(8) b) +// print_byte(byte zeropage($a) b) print_byte: { - .label b = 8 - //SEG95 [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + .label b = $a + //SEG103 [47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG96 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG104 [48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG97 [43] call print_char - //SEG98 [48] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG99 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#48 [phi:print_byte->print_char#0] -- register_copy - //SEG100 [48] phi (byte) print_char::ch#4 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG105 [49] call print_char + //SEG106 [37] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG107 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG108 [37] phi (byte) print_char::ch#5 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG101 print_byte::@1 - //SEG102 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG109 print_byte::@1 + //SEG110 [50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG103 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG111 [51] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG104 [46] call print_char - //SEG105 [48] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG106 [48] phi (byte*) print_char_cursor#34 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG107 [48] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG112 [52] call print_char + //SEG113 [37] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG114 [37] phi (byte*) print_char_cursor#36 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG115 [37] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG108 print_byte::@return - //SEG109 [47] return + //SEG116 print_byte::@return + //SEG117 [53] return rts } -//SEG110 print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - //SEG111 [49] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - //SEG112 [50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#34 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - //SEG113 print_char::@return - //SEG114 [51] return - rts -} -//SEG115 print_cls +//SEG118 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $b - //SEG116 [53] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG117 [53] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG119 [55] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG120 [55] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG118 [53] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG119 [53] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG120 print_cls::@1 + //SEG121 [55] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG122 [55] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG123 print_cls::@1 b1: - //SEG121 [54] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG124 [56] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG122 [55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG125 [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG123 [56] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG126 [58] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG124 print_cls::@return - //SEG125 [57] return + //SEG127 print_cls::@return + //SEG128 [59] return rts } -//SEG126 File Data +//SEG129 File Data print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-signed-word-minus-byte.sym b/src/test/ref/test-signed-word-minus-byte.sym index b88c6dddc..92f18f977 100644 --- a/src/test/ref/test-signed-word-minus-byte.sym +++ b/src/test/ref/test-signed-word-minus-byte.sym @@ -23,23 +23,21 @@ (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 b zp ZP_BYTE:8 4.0 -(byte) print_byte::b#1 b zp ZP_BYTE:8 4.0 -(byte) print_byte::b#2 b zp ZP_BYTE:8 2.0 +(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0 +(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0 +(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0 (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#5 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:9 5.240000000000001 -(byte*) print_char_cursor#34 print_char_cursor zp ZP_WORD:9 10.5 -(byte*) print_char_cursor#45 print_char_cursor zp ZP_WORD:9 2.0 -(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:9 8.666666666666666 -(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:9 2.0 -(byte*) print_char_cursor#50 print_char_cursor zp ZP_WORD:9 5.5 -(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:9 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:8 4.03125 +(byte*) print_char_cursor#36 print_char_cursor zp ZP_WORD:8 11.5 +(byte*) print_char_cursor#47 print_char_cursor zp ZP_WORD:8 6.5 +(byte*) print_char_cursor#53 print_char_cursor zp ZP_WORD:8 5.5 +(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:8 22.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -60,13 +58,14 @@ (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:6 4.0 (signed word) print_sword::w#1 w zp ZP_WORD:6 22.0 (signed word) print_sword::w#2 w zp ZP_WORD:6 22.0 -(signed word) print_sword::w#3 w zp ZP_WORD:6 7.0 -(signed word) print_sword::w#4 w zp ZP_WORD:6 4.0 +(signed word) print_sword::w#3 w zp ZP_WORD:6 4.666666666666666 +(signed word) print_sword::w#5 w zp ZP_WORD:6 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -76,10 +75,10 @@ zp ZP_WORD:2 [ main::w1#2 main::w1#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] -zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#0 ] -zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:9 [ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ] +zp ZP_WORD:6 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_word::w#0 ] +reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:8 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ] +zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:13 [ main::w2#0 ] reg byte a [ print_byte::$0 ] diff --git a/src/test/ref/type-signed.asm b/src/test/ref/type-signed.asm index bec447edb..b1cbbb2c2 100644 --- a/src/test/ref/type-signed.asm +++ b/src/test/ref/type-signed.asm @@ -137,7 +137,13 @@ print_char: { print_sword: { .label w = 8 lda w+1 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_word + rts + b1: lda #'-' jsr print_char sec @@ -147,8 +153,6 @@ print_sword: { lda #0 sbc w+1 sta w+1 - b1: - jsr print_word - rts + jmp b2 } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/type-signed.cfg b/src/test/ref/type-signed.cfg index eb5740223..cc4ce5e9a 100644 --- a/src/test/ref/type-signed.cfg +++ b/src/test/ref/type-signed.cfg @@ -13,7 +13,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@6 [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@6/(byte) main::i#1 ) [5] (byte*) print_line_cursor#13 ← phi( main/(byte*) 1024 main::@6/(byte*) print_line_cursor#1 ) - [5] (byte*) print_char_cursor#44 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#59 ) + [5] (byte*) print_char_cursor#47 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#57 ) [5] (word) main::b#2 ← phi( main/(word) $1024 main::@6/(word) main::b#1 ) [5] (signed word) main::a#2 ← phi( main/(signed word) -$3ff main::@6/(signed word) main::a#1 ) [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 @@ -41,7 +41,7 @@ main::@return: scope:[main] from main::@5 [18] return to:@return main::@6: scope:[main] from main::@5 - [19] (byte*~) print_char_cursor#59 ← (byte*) print_line_cursor#1 + [19] (byte*~) print_char_cursor#57 ← (byte*) print_line_cursor#1 to:main::@1 print_ln: scope:[print_ln] from main::@4 [20] phi() @@ -49,14 +49,13 @@ print_ln: scope:[print_ln] from main::@4 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [21] (byte*) print_line_cursor#6 ← phi( print_ln/(byte*) print_line_cursor#13 print_ln::@1/(byte*) print_line_cursor#1 ) [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 - [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [24] return to:@return -print_word: scope:[print_word] from main::@3 print_sword::@1 - [25] (byte*) print_char_cursor#42 ← phi( main::@3/(byte*) print_char_cursor#12 print_sword::@1/(byte*) print_char_cursor#40 ) - [25] (word) print_word::w#2 ← phi( main::@3/(word) print_word::w#1 print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from main::@3 print_sword::@2 + [25] (word) print_word::w#2 ← phi( main::@3/(word) print_word::w#1 print_sword::@2/(word) print_word::w#0 ) [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [27] call print_byte to:print_word::@1 @@ -68,45 +67,47 @@ print_word::@return: scope:[print_word] from print_word::@1 [30] return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - [31] (byte*) print_char_cursor#43 ← phi( print_word/(byte*) print_char_cursor#42 print_word::@1/(byte*) print_char_cursor#12 ) [31] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [33] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [33] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [34] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [36] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [36] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [37] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 [38] return to:@return -print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@2 - [39] (byte*) print_char_cursor#31 ← phi( main::@2/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#43 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#44 ) - [39] (byte) print_char::ch#4 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [40] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 - [41] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#31 +print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [39] (byte*) print_char_cursor#33 ← phi( main::@2/(byte*) print_char_cursor#13 print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#47 print_sword::@3/(byte*) print_char_cursor#47 ) + [39] (byte) print_char::ch#5 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 + [41] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#33 to:print_char::@return print_char::@return: scope:[print_char] from print_char [42] return to:@return print_sword: scope:[print_sword] from main::@1 - [43] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [44] phi() [45] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [46] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [47] (byte*) print_char_cursor#40 ← phi( print_sword/(byte*) print_char_cursor#44 print_sword::@3/(byte*) print_char_cursor#12 ) - [47] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [48] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [49] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [46] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [48] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [50] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [49] return to:@return +print_sword::@1: scope:[print_sword] from print_sword + [50] phi() + [51] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 diff --git a/src/test/ref/type-signed.log b/src/test/ref/type-signed.log index cd8c8d3d5..0d776f2a7 100644 --- a/src/test/ref/type-signed.log +++ b/src/test/ref/type-signed.log @@ -4,6 +4,7 @@ Culled Empty Block (label) @2 Culled Empty Block (label) @3 Culled Empty Block (label) @4 Culled Empty Block (label) @5 +Culled Empty Block (label) print_sword::@4 Culled Empty Block (label) @6 Culled Empty Block (label) @7 Culled Empty Block (label) @8 @@ -26,15 +27,15 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@12 print_ln: scope:[print_ln] from main::@5 - (byte*) print_char_cursor#39 ← phi( main::@5/(byte*) print_char_cursor#16 ) + (byte*) print_char_cursor#41 ← phi( main::@5/(byte*) print_char_cursor#17 ) (byte*) print_line_cursor#12 ← phi( main::@5/(byte*) print_line_cursor#13 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#20 ← phi( print_ln/(byte*) print_char_cursor#39 print_ln::@1/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#21 ← phi( print_ln/(byte*) print_char_cursor#41 print_ln::@1/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#6 ← phi( print_ln/(byte*) print_line_cursor#12 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#6 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#20 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#21 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -42,115 +43,125 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#1 ← (byte*) print_line_cursor#7 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#21 ← phi( print_ln::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#22 ← phi( print_ln::@2/(byte*) print_char_cursor#1 ) (byte*) print_line_cursor#8 ← phi( print_ln::@2/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#8 - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#21 + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#22 return to:@return print_sword: scope:[print_sword] from main::@1 - (byte*) print_char_cursor#46 ← phi( main::@1/(byte*) print_char_cursor#44 ) + (byte*) print_char_cursor#49 ← phi( main::@1/(byte*) print_char_cursor#47 ) (signed word) print_sword::w#2 ← phi( main::@1/(signed word) print_sword::w#1 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (number) 0 - (bool~) print_sword::$1 ← ! (bool~) print_sword::$0 - if((bool~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@4 - (byte*) print_char_cursor#40 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@4/(byte*) print_char_cursor#4 ) - (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#2 print_sword::@4/(signed word) print_sword::w#0 ) - (word~) print_sword::$2 ← ((word)) (signed word) print_sword::w#3 - (word) print_word::w#0 ← (word~) print_sword::$2 - call print_word + if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@1 - (byte*) print_char_cursor#22 ← phi( print_sword::@1/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#22 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword +print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#2 ) - (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#46 ) + (byte*) print_char_cursor#42 ← phi( print_sword/(byte*) print_char_cursor#49 ) (byte) print_char::ch#0 ← (byte) '-' call print_char - to:print_sword::@4 -print_sword::@4: scope:[print_sword] from print_sword::@2 - (signed word) print_sword::w#4 ← phi( print_sword::@2/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#23 ← phi( print_sword::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#23 - (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 + to:print_sword::@5 +print_sword::@5: scope:[print_sword] from print_sword::@1 + (signed word) print_sword::w#3 ← phi( print_sword::@1/(signed word) print_sword::w#5 ) + (byte*) print_char_cursor#23 ← phi( print_sword::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#23 + (signed word~) print_sword::$5 ← - (signed word) print_sword::w#3 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@3 - (byte*) print_char_cursor#24 ← phi( print_sword::@3/(byte*) print_char_cursor#3 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#24 + to:print_sword::@2 +print_sword::@3: scope:[print_sword] from print_sword + (signed word) print_sword::w#7 ← phi( print_sword/(signed word) print_sword::w#2 ) + (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#49 ) + (byte) print_char::ch#1 ← (byte) ' ' + call print_char + to:print_sword::@6 +print_sword::@6: scope:[print_sword] from print_sword::@3 + (signed word) print_sword::w#6 ← phi( print_sword::@3/(signed word) print_sword::w#7 ) + (byte*) print_char_cursor#24 ← phi( print_sword::@3/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#24 + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 + (byte*) print_char_cursor#44 ← phi( print_sword::@5/(byte*) print_char_cursor#3 print_sword::@6/(byte*) print_char_cursor#4 ) + (signed word) print_sword::w#4 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#6 ) + (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#4 + (word) print_word::w#0 ← (word~) print_sword::$1 + call print_word + to:print_sword::@7 +print_sword::@7: scope:[print_sword] from print_sword::@2 + (byte*) print_char_cursor#25 ← phi( print_sword::@2/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#25 + to:print_sword::@return +print_sword::@return: scope:[print_sword] from print_sword::@7 + (byte*) print_char_cursor#26 ← phi( print_sword::@7/(byte*) print_char_cursor#5 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#26 return to:@return -print_word: scope:[print_word] from main::@4 print_sword::@1 - (byte*) print_char_cursor#42 ← phi( main::@4/(byte*) print_char_cursor#15 print_sword::@1/(byte*) print_char_cursor#40 ) - (word) print_word::w#2 ← phi( main::@4/(word) print_word::w#1 print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from main::@4 print_sword::@2 + (byte*) print_char_cursor#45 ← phi( main::@4/(byte*) print_char_cursor#16 print_sword::@2/(byte*) print_char_cursor#44 ) + (word) print_word::w#2 ← phi( main::@4/(word) print_word::w#1 print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#2 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte 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*) print_char_cursor#25 ← phi( print_word/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#25 + (byte*) print_char_cursor#27 ← phi( print_word/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#27 (byte~) print_word::$2 ← < (word) print_word::w#3 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#26 ← phi( print_word::@1/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#26 + (byte*) print_char_cursor#28 ← phi( print_word::@1/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#28 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#27 ← phi( print_word::@2/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#27 + (byte*) print_char_cursor#29 ← phi( print_word::@2/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#29 return to:@return @12: scope:[] from @begin (byte*) print_line_cursor#16 ← phi( @begin/(byte*) print_line_cursor#0 ) - (byte*) print_char_cursor#48 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#51 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@20 print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) print_char_cursor#43 ← phi( print_word/(byte*) print_char_cursor#42 print_word::@1/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#7 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4 - (byte) print_char::ch#1 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char 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*) print_char_cursor#28 ← phi( print_byte/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#28 + (byte*) print_char_cursor#30 ← phi( print_byte/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#30 (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f - (byte) print_char::ch#2 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#29 ← phi( print_byte::@1/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#29 + (byte*) print_char_cursor#31 ← phi( print_byte::@1/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#31 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#30 ← phi( print_byte::@2/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#30 + (byte*) print_char_cursor#32 ← phi( print_byte::@2/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#32 return to:@return -print_char: scope:[print_char] from main::@3 print_byte print_byte::@1 print_sword::@2 - (byte*) print_char_cursor#31 ← phi( main::@3/(byte*) print_char_cursor#14 print_byte/(byte*) print_char_cursor#43 print_byte::@1/(byte*) print_char_cursor#9 print_sword::@2/(byte*) print_char_cursor#41 ) - (byte) print_char::ch#4 ← phi( main::@3/(byte) print_char::ch#3 print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 ) - *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 - (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#31 +print_char: scope:[print_char] from main::@3 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#33 ← phi( main::@3/(byte*) print_char_cursor#15 print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#10 print_sword::@1/(byte*) print_char_cursor#42 print_sword::@3/(byte*) print_char_cursor#43 ) + (byte) print_char::ch#5 ← phi( main::@3/(byte) print_char::ch#4 print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 + (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#33 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#32 ← phi( print_char/(byte*) print_char_cursor#12 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#32 + (byte*) print_char_cursor#34 ← phi( print_char/(byte*) print_char_cursor#13 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#34 return to:@return main: scope:[main] from @20 (byte*) print_line_cursor#19 ← phi( @20/(byte*) print_line_cursor#14 ) - (byte*) print_char_cursor#47 ← phi( @20/(byte*) print_char_cursor#45 ) + (byte*) print_char_cursor#50 ← phi( @20/(byte*) print_char_cursor#48 ) (signed word) main::a#0 ← (number) -$3ff (word) main::b#0 ← (number) $1024 (byte) main::i#0 ← (byte) 0 @@ -158,7 +169,7 @@ main: scope:[main] from @20 main::@1: scope:[main] from main main::@6 (byte) main::i#6 ← phi( main/(byte) main::i#0 main::@6/(byte) main::i#1 ) (byte*) print_line_cursor#18 ← phi( main/(byte*) print_line_cursor#19 main::@6/(byte*) print_line_cursor#3 ) - (byte*) print_char_cursor#44 ← phi( main/(byte*) print_char_cursor#47 main::@6/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#47 ← phi( main/(byte*) print_char_cursor#50 main::@6/(byte*) print_char_cursor#18 ) (word) main::b#2 ← phi( main/(word) main::b#0 main::@6/(word) main::b#4 ) (signed word) main::a#2 ← phi( main/(signed word) main::a#0 main::@6/(signed word) main::a#3 ) (signed word) main::a#1 ← (signed word) main::a#2 + (number) -7 @@ -171,9 +182,9 @@ main::@3: scope:[main] from main::@1 (byte) main::i#5 ← phi( main::@1/(byte) main::i#6 ) (byte*) print_line_cursor#17 ← phi( main::@1/(byte*) print_line_cursor#18 ) (word) main::b#5 ← phi( main::@1/(word) main::b#1 ) - (byte*) print_char_cursor#33 ← phi( main::@1/(byte*) print_char_cursor#5 ) - (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#33 - (byte) print_char::ch#3 ← (byte) ' ' + (byte*) print_char_cursor#35 ← phi( main::@1/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#35 + (byte) print_char::ch#4 ← (byte) ' ' call print_char to:main::@4 main::@4: scope:[main] from main::@3 @@ -181,8 +192,8 @@ main::@4: scope:[main] from main::@3 (byte) main::i#4 ← phi( main::@3/(byte) main::i#5 ) (byte*) print_line_cursor#15 ← phi( main::@3/(byte*) print_line_cursor#17 ) (word) main::b#3 ← phi( main::@3/(word) main::b#5 ) - (byte*) print_char_cursor#34 ← phi( main::@3/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#34 + (byte*) print_char_cursor#36 ← phi( main::@3/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#36 (word) print_word::w#1 ← (word) main::b#3 call print_word to:main::@5 @@ -191,38 +202,38 @@ main::@5: scope:[main] from main::@4 (signed word) main::a#4 ← phi( main::@4/(signed word) main::a#5 ) (byte) main::i#3 ← phi( main::@4/(byte) main::i#4 ) (byte*) print_line_cursor#13 ← phi( main::@4/(byte*) print_line_cursor#15 ) - (byte*) print_char_cursor#35 ← phi( main::@4/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#35 + (byte*) print_char_cursor#37 ← phi( main::@4/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#37 call print_ln to:main::@6 main::@6: scope:[main] from main::@5 (word) main::b#4 ← phi( main::@5/(word) main::b#6 ) (signed word) main::a#3 ← phi( main::@5/(signed word) main::a#4 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#3 ) - (byte*) print_char_cursor#36 ← phi( main::@5/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#38 ← phi( main::@5/(byte*) print_char_cursor#2 ) (byte*) print_line_cursor#9 ← phi( main::@5/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#9 - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#36 + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#38 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,5) (bool~) main::$4 ← (byte) main::i#1 != rangelast(0,5) if((bool~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@6 (byte*) print_line_cursor#10 ← phi( main::@6/(byte*) print_line_cursor#3 ) - (byte*) print_char_cursor#37 ← phi( main::@6/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#37 + (byte*) print_char_cursor#39 ← phi( main::@6/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#39 (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10 return to:@return @20: scope:[] from @12 (byte*) print_line_cursor#14 ← phi( @12/(byte*) print_line_cursor#16 ) - (byte*) print_char_cursor#45 ← phi( @12/(byte*) print_char_cursor#48 ) + (byte*) print_char_cursor#48 ← phi( @12/(byte*) print_char_cursor#51 ) call main to:@21 @21: scope:[] from @20 (byte*) print_line_cursor#11 ← phi( @20/(byte*) print_line_cursor#4 ) - (byte*) print_char_cursor#38 ← phi( @20/(byte*) print_char_cursor#18 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#38 + (byte*) print_char_cursor#40 ← phi( @20/(byte*) print_char_cursor#19 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#40 (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#11 to:@end @end: scope:[] from @21 @@ -285,6 +296,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#2 (byte) print_char::ch#3 (byte) print_char::ch#4 +(byte) print_char::ch#5 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -330,7 +342,10 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#46 (byte*) print_char_cursor#47 (byte*) print_char_cursor#48 +(byte*) print_char_cursor#49 (byte*) print_char_cursor#5 +(byte*) print_char_cursor#50 +(byte*) print_char_cursor#51 (byte*) print_char_cursor#6 (byte*) print_char_cursor#7 (byte*) print_char_cursor#8 @@ -368,13 +383,14 @@ SYMBOL TABLE SSA (byte*) print_screen#0 (void()) print_sword((signed word) print_sword::w) (bool~) print_sword::$0 -(bool~) print_sword::$1 -(word~) print_sword::$2 +(word~) print_sword::$1 (signed word~) print_sword::$5 (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 -(label) print_sword::@4 +(label) print_sword::@5 +(label) print_sword::@6 +(label) print_sword::@7 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 @@ -383,6 +399,8 @@ SYMBOL TABLE SSA (signed word) print_sword::w#3 (signed word) print_sword::w#4 (signed word) print_sword::w#5 +(signed word) print_sword::w#6 +(signed word) print_sword::w#7 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -406,7 +424,7 @@ Adding number conversion cast (snumber) -7 in (signed word) main::a#1 ← (signe Adding number conversion cast (unumber) $141 in (word) main::b#1 ← (word) main::b#2 + (number) $141 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 -Inlining cast (word~) print_sword::$2 ← (word)(signed word) print_sword::w#3 +Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#4 Inlining cast (signed word) main::a#0 ← (snumber)(number) -$3ff Inlining cast (word) main::b#0 ← (unumber)(number) $1024 Successful SSA optimization Pass2InlineCast @@ -430,74 +448,81 @@ Finalized signed number type (signed byte) -7 Finalized unsigned number type (word) $141 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f -Inversing boolean not [17] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (signed byte) 0 from [16] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (signed byte) 0 -Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#48 (byte*) print_line_cursor#16 (byte*) print_char_cursor#45 (byte*) print_line_cursor#14 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#7 (byte*) print_char_cursor#1 (byte*) print_line_cursor#8 (byte*) print_char_cursor#21 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 -Alias (word) print_word::w#0 = (word~) print_sword::$2 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#3 (byte*) print_char_cursor#24 (byte*) print_char_cursor#5 -Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#46 -Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#4 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#51 (byte*) print_line_cursor#16 (byte*) print_char_cursor#48 (byte*) print_line_cursor#14 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#7 (byte*) print_char_cursor#1 (byte*) print_line_cursor#8 (byte*) print_char_cursor#22 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 +Alias (byte*) print_char_cursor#42 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#43 +Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 +Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#3 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 +Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#4 +Alias (word) print_word::w#0 = (word~) print_sword::$1 +Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#26 (byte*) print_char_cursor#6 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 Alias (word) print_word::w#2 = (word) print_word::w#3 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#6 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#7 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#27 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#8 (byte*) print_char_cursor#29 (byte*) print_char_cursor#9 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#9 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#30 (byte*) print_char_cursor#11 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#32 (byte*) print_char_cursor#13 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#30 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#32 (byte*) print_char_cursor#12 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#14 Alias (word) main::b#1 = (word) main::b#5 (word) main::b#3 (word) main::b#6 (word) main::b#4 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#18 (byte*) print_line_cursor#15 Alias (byte) main::i#2 = (byte) main::i#5 (byte) main::i#6 (byte) main::i#4 (byte) main::i#3 Alias (signed word) main::a#1 = (signed word) main::a#6 (signed word) main::a#5 (signed word) main::a#4 (signed word) main::a#3 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#33 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#34 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#35 +Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#35 +Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 (byte*) print_line_cursor#4 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#37 (byte*) print_char_cursor#18 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#38 +Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#39 (byte*) print_char_cursor#19 +Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#40 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#20 +Self Phi Eliminated (byte*) print_char_cursor#21 Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#13 -Identical Phi Values (byte*) print_char_cursor#39 (byte*) print_char_cursor#16 -Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#39 +Identical Phi Values (byte*) print_char_cursor#41 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#41 Identical Phi Values (signed word) print_sword::w#2 (signed word) print_sword::w#1 -Identical Phi Values (byte*) print_char_cursor#41 (byte*) print_char_cursor#44 -Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#26 -Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_char_cursor#0 +Identical Phi Values (byte*) print_char_cursor#42 (byte*) print_char_cursor#47 +Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#28 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#50 (byte*) print_char_cursor#0 Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_char_cursor#0 -Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#22 -Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#12 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#28 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#18 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#10 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [18] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) main::$4 [96] if((byte) main::i#1!=rangelast(0,5)) goto main::@1 +Identical Phi Values (byte*) print_char_cursor#44 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (byte*) print_char_cursor#46 (byte*) print_char_cursor#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 +Simple Condition (bool~) print_sword::$0 [17] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 +Simple Condition (bool~) main::$4 [100] if((byte) main::i#1!=rangelast(0,5)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_char_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' +Constant (const byte) print_char::ch#1 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const signed word) main::a#0 = -$3ff Constant (const word) main::b#0 = $1024 Constant (const byte) main::i#0 = 0 -Constant (const byte) print_char::ch#3 = ' ' +Constant (const byte) print_char::ch#4 = ' ' Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [94] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [96] if(main::i#1!=rangelast(0,5)) goto main::@1 to (number) 6 +Resolved ranged next value [98] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [100] if(main::i#1!=rangelast(0,5)) goto main::@1 to (number) 6 Adding number conversion cast (unumber) 6 in if((byte) main::i#1!=(number) 6) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 6 @@ -505,21 +530,22 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 6 Successful SSA optimization PassNFinalizeNumberTypeConversions Inlining constant with var siblings (const byte) print_char::ch#0 -Inlining constant with var siblings (const byte) print_char::ch#3 +Inlining constant with var siblings (const byte) print_char::ch#1 +Inlining constant with var siblings (const byte) print_char::ch#4 Inlining constant with var siblings (const signed word) main::a#0 Inlining constant with var siblings (const word) main::b#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte*) print_char_cursor#0 -Constant inlined print_char::ch#3 = (byte) ' ' Constant inlined main::a#0 = (signed word) -$3ff Constant inlined print_char_cursor#0 = (byte*) 1024 +Constant inlined print_char::ch#4 = (byte) ' ' Constant inlined main::b#0 = (word) $1024 +Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' Constant inlined main::i#0 = (byte) 0 Constant inlined $0 = (const byte[]) print_hextab#0 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting main::@7(between main::@6 and main::@1) Adding NOP phi() at start of @begin Adding NOP phi() at start of @12 @@ -531,40 +557,35 @@ Adding NOP phi() at start of main::@5 Adding NOP phi() at start of print_ln::@2 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 -Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@7 CALL GRAPH Calls in [] to main:3 -Calls in [main] to print_sword:11 print_char:13 print_word:17 print_ln:19 -Calls in [print_word] to print_byte:39 print_byte:43 -Calls in [print_byte] to print_char:51 print_char:56 -Calls in [print_sword] to print_char:65 print_word:73 +Calls in [main] to print_sword:11 print_char:13 print_word:16 print_ln:18 +Calls in [print_word] to print_byte:37 print_byte:40 +Calls in [print_byte] to print_char:48 print_char:53 +Calls in [print_sword] to print_char:62 print_word:67 print_char:71 -Created 14 initial phi equivalence classes -Coalesced [12] print_char_cursor#55 ← print_char_cursor#12 +Created 11 initial phi equivalence classes +Coalesced [12] print_char_cursor#52 ← print_char_cursor#13 Coalesced [15] print_word::w#4 ← print_word::w#1 -Coalesced [16] print_char_cursor#51 ← print_char_cursor#12 -Coalesced [23] main::a#7 ← main::a#1 -Coalesced [24] main::b#7 ← main::b#1 -Not coalescing [25] print_char_cursor#59 ← print_line_cursor#1 -Coalesced [26] print_line_cursor#22 ← print_line_cursor#1 -Coalesced [27] main::i#7 ← main::i#1 -Coalesced [28] print_line_cursor#20 ← print_line_cursor#13 -Coalesced (already) [34] print_line_cursor#21 ← print_line_cursor#1 -Coalesced [37] print_byte::b#4 ← print_byte::b#0 -Coalesced [38] print_char_cursor#53 ← print_char_cursor#42 -Coalesced [41] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [42] print_char_cursor#54 ← print_char_cursor#12 -Coalesced [49] print_char::ch#5 ← print_char::ch#1 -Coalesced (already) [50] print_char_cursor#56 ← print_char_cursor#43 -Coalesced [54] print_char::ch#6 ← print_char::ch#2 -Coalesced (already) [55] print_char_cursor#57 ← print_char_cursor#12 -Coalesced [64] print_char_cursor#58 ← print_char_cursor#44 -Coalesced [67] print_sword::w#7 ← print_sword::w#0 -Coalesced [68] print_char_cursor#50 ← print_char_cursor#12 -Coalesced [71] print_word::w#5 ← print_word::w#0 -Coalesced (already) [72] print_char_cursor#52 ← print_char_cursor#40 -Coalesced [76] print_sword::w#6 ← print_sword::w#1 -Coalesced (already) [77] print_char_cursor#49 ← print_char_cursor#44 +Coalesced [22] main::a#7 ← main::a#1 +Coalesced [23] main::b#7 ← main::b#1 +Not coalescing [24] print_char_cursor#57 ← print_line_cursor#1 +Coalesced [25] print_line_cursor#22 ← print_line_cursor#1 +Coalesced [26] main::i#7 ← main::i#1 +Coalesced [27] print_line_cursor#20 ← print_line_cursor#13 +Coalesced (already) [33] print_line_cursor#21 ← print_line_cursor#1 +Coalesced [36] print_byte::b#4 ← print_byte::b#0 +Coalesced [39] print_byte::b#5 ← print_byte::b#1 +Coalesced [46] print_char::ch#6 ← print_char::ch#2 +Coalesced (already) [47] print_char_cursor#53 ← print_char_cursor#13 +Coalesced [51] print_char::ch#7 ← print_char::ch#3 +Coalesced (already) [52] print_char_cursor#54 ← print_char_cursor#13 +Coalesced [61] print_char_cursor#56 ← print_char_cursor#47 +Coalesced [63] print_sword::w#9 ← print_sword::w#1 +Coalesced [66] print_word::w#5 ← print_word::w#0 +Coalesced (already) [70] print_char_cursor#55 ← print_char_cursor#47 +Coalesced [73] print_sword::w#8 ← print_sword::w#0 Coalesced down to 9 phi equivalence classes Culled Empty Block (label) @12 Culled Empty Block (label) @21 @@ -572,10 +593,10 @@ Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 -Culled Empty Block (label) print_sword::@3 -Culled Empty Block (label) print_sword::@5 +Culled Empty Block (label) print_sword::@6 +Culled Empty Block (label) print_sword::@7 Renumbering block @20 to @1 -Renumbering block print_sword::@4 to print_sword::@3 +Renumbering block print_sword::@5 to print_sword::@4 Renumbering block main::@3 to main::@2 Renumbering block main::@4 to main::@3 Renumbering block main::@5 to main::@4 @@ -588,7 +609,8 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@4 Adding NOP phi() at start of print_ln -Adding NOP phi() at start of print_sword::@2 +Adding NOP phi() at start of print_sword::@3 +Adding NOP phi() at start of print_sword::@1 FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -606,7 +628,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@6 [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@6/(byte) main::i#1 ) [5] (byte*) print_line_cursor#13 ← phi( main/(byte*) 1024 main::@6/(byte*) print_line_cursor#1 ) - [5] (byte*) print_char_cursor#44 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#59 ) + [5] (byte*) print_char_cursor#47 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#57 ) [5] (word) main::b#2 ← phi( main/(word) $1024 main::@6/(word) main::b#1 ) [5] (signed word) main::a#2 ← phi( main/(signed word) -$3ff main::@6/(signed word) main::a#1 ) [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 @@ -634,7 +656,7 @@ main::@return: scope:[main] from main::@5 [18] return to:@return main::@6: scope:[main] from main::@5 - [19] (byte*~) print_char_cursor#59 ← (byte*) print_line_cursor#1 + [19] (byte*~) print_char_cursor#57 ← (byte*) print_line_cursor#1 to:main::@1 print_ln: scope:[print_ln] from main::@4 [20] phi() @@ -642,14 +664,13 @@ print_ln: scope:[print_ln] from main::@4 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [21] (byte*) print_line_cursor#6 ← phi( print_ln/(byte*) print_line_cursor#13 print_ln::@1/(byte*) print_line_cursor#1 ) [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 - [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [24] return to:@return -print_word: scope:[print_word] from main::@3 print_sword::@1 - [25] (byte*) print_char_cursor#42 ← phi( main::@3/(byte*) print_char_cursor#12 print_sword::@1/(byte*) print_char_cursor#40 ) - [25] (word) print_word::w#2 ← phi( main::@3/(word) print_word::w#1 print_sword::@1/(word) print_word::w#0 ) +print_word: scope:[print_word] from main::@3 print_sword::@2 + [25] (word) print_word::w#2 ← phi( main::@3/(word) print_word::w#1 print_sword::@2/(word) print_word::w#0 ) [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [27] call print_byte to:print_word::@1 @@ -661,48 +682,50 @@ print_word::@return: scope:[print_word] from print_word::@1 [30] return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - [31] (byte*) print_char_cursor#43 ← phi( print_word/(byte*) print_char_cursor#42 print_word::@1/(byte*) print_char_cursor#12 ) [31] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [33] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [33] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [34] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [36] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [36] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [37] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 [38] return to:@return -print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@2 - [39] (byte*) print_char_cursor#31 ← phi( main::@2/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#43 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#44 ) - [39] (byte) print_char::ch#4 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) - [40] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 - [41] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#31 +print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@1 print_sword::@3 + [39] (byte*) print_char_cursor#33 ← phi( main::@2/(byte*) print_char_cursor#13 print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#47 print_sword::@3/(byte*) print_char_cursor#47 ) + [39] (byte) print_char::ch#5 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 + [41] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#33 to:print_char::@return print_char::@return: scope:[print_char] from print_char [42] return to:@return print_sword: scope:[print_sword] from main::@1 - [43] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 - to:print_sword::@2 -print_sword::@2: scope:[print_sword] from print_sword + [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 + to:print_sword::@3 +print_sword::@3: scope:[print_sword] from print_sword [44] phi() [45] call print_char - to:print_sword::@3 -print_sword::@3: scope:[print_sword] from print_sword::@2 - [46] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 - to:print_sword::@1 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [47] (byte*) print_char_cursor#40 ← phi( print_sword/(byte*) print_char_cursor#44 print_sword::@3/(byte*) print_char_cursor#12 ) - [47] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 ) - [48] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - [49] call print_word + to:print_sword::@2 +print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 + [46] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 ) + [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + [48] call print_word to:print_sword::@return -print_sword::@return: scope:[print_sword] from print_sword::@1 - [50] return +print_sword::@return: scope:[print_sword] from print_sword::@2 + [49] return to:@return +print_sword::@1: scope:[print_sword] from print_sword + [50] phi() + [51] call print_char + to:print_sword::@4 +print_sword::@4: scope:[print_sword] from print_sword::@1 + [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 + to:print_sword::@2 VARIABLE REGISTER WEIGHTS @@ -725,17 +748,14 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#2 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#1 4.0 (byte) print_char::ch#2 4.0 -(byte) print_char::ch#4 6.0 +(byte) print_char::ch#3 4.0 +(byte) print_char::ch#5 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 5.240000000000001 -(byte*) print_char_cursor#31 10.5 -(byte*) print_char_cursor#40 3.0 -(byte*) print_char_cursor#42 7.5 -(byte*) print_char_cursor#43 2.0 -(byte*) print_char_cursor#44 2.5 -(byte*~) print_char_cursor#59 22.0 +(byte*) print_char_cursor#13 3.5757575757575757 +(byte*) print_char_cursor#33 11.5 +(byte*) print_char_cursor#47 2.142857142857143 +(byte*~) print_char_cursor#57 22.0 (byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#1 46.42857142857143 @@ -746,8 +766,8 @@ VARIABLE REGISTER WEIGHTS (void()) print_sword((signed word) print_sword::w) (signed word) print_sword::w (signed word) print_sword::w#0 4.0 -(signed word) print_sword::w#1 4.25 -(signed word) print_sword::w#3 4.0 +(signed word) print_sword::w#1 2.8333333333333335 +(signed word) print_sword::w#4 4.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 4.0 @@ -761,9 +781,9 @@ Initial phi equivalence classes [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] [ print_word::w#2 print_word::w#1 print_word::w#0 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +[ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] 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 ] Complete equivalence classes @@ -773,9 +793,9 @@ Complete equivalence classes [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] [ print_word::w#2 print_word::w#1 print_word::w#0 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -[ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] -[ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +[ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +[ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] +[ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] [ print_byte::$0 ] [ print_byte::$2 ] Allocated zp ZP_WORD:2 [ main::a#2 main::a#1 ] @@ -784,9 +804,9 @@ Allocated zp ZP_BYTE:6 [ main::i#2 main::i#1 ] Allocated zp ZP_WORD:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] Allocated zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] Allocated zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated zp ZP_BYTE:12 [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -Allocated zp ZP_WORD:13 [ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] -Allocated zp ZP_WORD:15 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Allocated zp ZP_BYTE:12 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Allocated zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] +Allocated zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Allocated zp ZP_BYTE:17 [ print_byte::$0 ] Allocated zp ZP_BYTE:18 [ print_byte::$2 ] @@ -831,7 +851,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [5] phi (byte*) print_char_cursor#44 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG14 [5] phi (byte*) print_char_cursor#47 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -887,8 +907,8 @@ main: { //SEG24 [11] call print_char //SEG25 [39] phi from main::@2 to print_char [phi:main::@2->print_char] print_char_from_b2: - //SEG26 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#12 [phi:main::@2->print_char#0] -- register_copy - //SEG27 [39] phi (byte) print_char::ch#4 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuz1=vbuc1 + //SEG26 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:main::@2->print_char#0] -- register_copy + //SEG27 [39] phi (byte) print_char::ch#5 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char @@ -903,59 +923,58 @@ main: { //SEG30 [13] call print_word //SEG31 [25] phi from main::@3 to print_word [phi:main::@3->print_word] print_word_from_b3: - //SEG32 [25] phi (byte*) print_char_cursor#42 = (byte*) print_char_cursor#12 [phi:main::@3->print_word#0] -- register_copy - //SEG33 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:main::@3->print_word#1] -- register_copy + //SEG32 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:main::@3->print_word#0] -- register_copy jsr print_word - //SEG34 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG33 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG35 main::@4 + //SEG34 main::@4 b4: - //SEG36 [15] call print_ln - //SEG37 [20] phi from main::@4 to print_ln [phi:main::@4->print_ln] + //SEG35 [15] call print_ln + //SEG36 [20] phi from main::@4 to print_ln [phi:main::@4->print_ln] print_ln_from_b4: jsr print_ln jmp b5 - //SEG38 main::@5 + //SEG37 main::@5 b5: - //SEG39 [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG38 [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG40 [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG39 [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b6 jmp breturn - //SEG41 main::@return + //SEG40 main::@return breturn: - //SEG42 [18] return + //SEG41 [18] return rts - //SEG43 main::@6 + //SEG42 main::@6 b6: - //SEG44 [19] (byte*~) print_char_cursor#59 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG43 [19] (byte*~) print_char_cursor#57 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG45 [5] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG44 [5] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG46 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy - //SEG47 [5] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG48 [5] phi (byte*) print_char_cursor#44 = (byte*~) print_char_cursor#59 [phi:main::@6->main::@1#2] -- register_copy - //SEG49 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@6->main::@1#3] -- register_copy - //SEG50 [5] phi (signed word) main::a#2 = (signed word) main::a#1 [phi:main::@6->main::@1#4] -- register_copy + //SEG45 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy + //SEG46 [5] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy + //SEG47 [5] phi (byte*) print_char_cursor#47 = (byte*~) print_char_cursor#57 [phi:main::@6->main::@1#2] -- register_copy + //SEG48 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@6->main::@1#3] -- register_copy + //SEG49 [5] phi (signed word) main::a#2 = (signed word) main::a#1 [phi:main::@6->main::@1#4] -- register_copy jmp b1 } -//SEG51 print_ln +//SEG50 print_ln // Print a newline print_ln: { - //SEG52 [21] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG51 [21] 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: - //SEG53 [21] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG52 [21] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG54 print_ln::@1 + //SEG53 print_ln::@1 b1: - //SEG55 [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG54 [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -963,7 +982,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG56 [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG55 [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -973,135 +992,168 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG57 print_ln::@return + //SEG56 print_ln::@return breturn: - //SEG58 [24] return + //SEG57 [24] return rts } -//SEG59 print_word +//SEG58 print_word // Print a word as HEX // print_word(word zeropage(9) w) print_word: { .label w = 9 - //SEG60 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 + //SEG59 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG61 [27] call print_byte - //SEG62 [31] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG60 [27] call print_byte + //SEG61 [31] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG63 [31] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#42 [phi:print_word->print_byte#0] -- register_copy - //SEG64 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG62 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte jmp b1 - //SEG65 print_word::@1 + //SEG63 print_word::@1 b1: - //SEG66 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 + //SEG64 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG67 [29] call print_byte - //SEG68 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG65 [29] call print_byte + //SEG66 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG69 [31] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG70 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG67 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte jmp breturn - //SEG71 print_word::@return + //SEG68 print_word::@return breturn: - //SEG72 [30] return + //SEG69 [30] return rts } -//SEG73 print_byte +//SEG70 print_byte // Print a byte as HEX // print_byte(byte zeropage($b) b) print_byte: { .label _0 = $11 .label _2 = $12 .label b = $b - //SEG74 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + //SEG71 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG75 [33] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG72 [33] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG76 [34] call print_char - //SEG77 [39] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG73 [34] call print_char + //SEG74 [39] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG78 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#43 [phi:print_byte->print_char#0] -- register_copy - //SEG79 [39] phi (byte) print_char::ch#4 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG75 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG76 [39] phi (byte) print_char::ch#5 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG80 print_byte::@1 + //SEG77 print_byte::@1 b1: - //SEG81 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG78 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG82 [36] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG79 [36] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG83 [37] call print_char - //SEG84 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG80 [37] call print_char + //SEG81 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG85 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG86 [39] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG82 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG83 [39] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG87 print_byte::@return + //SEG84 print_byte::@return breturn: - //SEG88 [38] return + //SEG85 [38] return rts } -//SEG89 print_char +//SEG86 print_char // Print a single char // print_char(byte zeropage($c) ch) print_char: { .label ch = $c - //SEG90 [40] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuz2 + //SEG87 [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG91 [41] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#31 -- pbuz1=_inc_pbuz1 + //SEG88 [41] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG92 print_char::@return + //SEG89 print_char::@return breturn: - //SEG93 [42] return + //SEG90 [42] return rts } -//SEG94 print_sword +//SEG91 print_sword // Print a signed word as HEX // print_sword(signed word zeropage($f) w) print_sword: { .label w = $f - //SEG95 [43] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG92 [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG96 [44] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: + bmi b1_from_print_sword + //SEG93 [44] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG94 print_sword::@3 + b3: + //SEG95 [45] call print_char + //SEG96 [39] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG97 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#47 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG98 [39] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + //SEG99 [46] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG100 [46] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy jmp b2 - //SEG97 print_sword::@2 + //SEG101 print_sword::@2 b2: - //SEG98 [45] call print_char - //SEG99 [39] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG100 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#44 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG101 [39] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG102 [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 -- vwuz1=vwuz2 + lda w + sta print_word.w + lda w+1 + sta print_word.w+1 + //SEG103 [48] call print_word + //SEG104 [25] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG105 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_sword::@2->print_word#0] -- register_copy + jsr print_word + jmp breturn + //SEG106 print_sword::@return + breturn: + //SEG107 [49] return + rts + //SEG108 [50] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG109 print_sword::@1 + b1: + //SEG110 [51] call print_char + //SEG111 [39] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG112 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#47 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG113 [39] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - jmp b3 - //SEG102 print_sword::@3 - b3: - //SEG103 [46] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG114 print_sword::@4 + b4: + //SEG115 [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -1109,104 +1161,81 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG104 [47] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG105 [47] phi (byte*) print_char_cursor#40 = (byte*) print_char_cursor#44 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG106 [47] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG107 print_sword::@1 - b1: - //SEG108 [48] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 -- vwuz1=vwuz2 - lda w - sta print_word.w - lda w+1 - sta print_word.w+1 - //SEG109 [49] call print_word - //SEG110 [25] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG111 [25] phi (byte*) print_char_cursor#42 = (byte*) print_char_cursor#40 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG112 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG113 print_sword::@return - breturn: - //SEG114 [50] return - rts + jmp b2_from_b4 } -//SEG115 File Data +//SEG116 File Data print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 [ main::b#2 print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 ] ( main:2 [ main::b#2 print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 ] ) always clobbers reg byte a +Statement [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ( main:2 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ] -Statement [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 [ print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ( main:2 [ print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ) always clobbers reg byte a -Statement [8] (signed word) print_sword::w#1 ← (signed word) main::a#1 [ print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ( main:2 [ print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ) always clobbers reg byte a -Statement [12] (word) print_word::w#1 ← (word) main::b#1 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#12 ] ( main:2 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [19] (byte*~) print_char_cursor#59 ← (byte*) print_line_cursor#1 [ main::a#1 main::b#1 print_char_cursor#59 print_line_cursor#1 main::i#1 ] ( main:2 [ main::a#1 main::b#1 print_char_cursor#59 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_char_cursor#42 print_byte::b#0 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#42 print_byte::b#0 ] main:2::print_sword:9::print_word:49 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#42 print_byte::b#0 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_byte::b#1 ] main:2::print_sword:9::print_word:49 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#43 print_byte::$0 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#43 print_byte::$0 ] main:2::print_sword:9::print_word:49::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#43 print_byte::$0 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#43 print_byte::$0 ] main:2::print_sword:9::print_word:49::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#43 print_byte::$0 ] ) always clobbers reg byte a +Statement [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ) always clobbers reg byte a +Statement [8] (signed word) print_sword::w#1 ← (signed word) main::a#1 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ) always clobbers reg byte a +Statement [12] (word) print_word::w#1 ← (word) main::b#1 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ( main:2 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [19] (byte*~) print_char_cursor#57 ← (byte*) print_line_cursor#1 [ main::a#1 main::b#1 print_char_cursor#57 print_line_cursor#1 main::i#1 ] ( main:2 [ main::a#1 main::b#1 print_char_cursor#57 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a +Statement [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_char_cursor#13 print_word::w#2 print_byte::b#0 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#2 print_byte::b#0 ] main:2::print_sword:9::print_word:48 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#2 print_byte::b#0 ] ) always clobbers reg byte a +Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#1 ] main:2::print_sword:9::print_word:48 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:9::print_word:49::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#12 print_byte::$2 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:9::print_word:49::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [40] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 [ print_char_cursor#31 ] ( main:2::print_char:11 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#31 ] main:2::print_word:13::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#31 ] main:2::print_sword:9::print_word:49::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#31 ] main:2::print_word:13::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#31 ] main:2::print_sword:9::print_word:49::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#31 ] main:2::print_word:13::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#31 ] main:2::print_sword:9::print_word:49::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#31 ] main:2::print_word:13::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#31 ] main:2::print_sword:9::print_word:49::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#31 ] main:2::print_sword:9::print_char:45 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#31 ] ) always clobbers reg byte y +Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 [ print_char_cursor#33 ] ( main:2::print_char:11 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_word:13::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_sword:9::print_char:45 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] main:2::print_sword:9::print_char:51 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [43] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#44 print_sword::w#1 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#44 print_sword::w#1 ] ) always clobbers reg byte a -Statement [46] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [48] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_word::w#0 print_char_cursor#40 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#0 print_char_cursor#40 ] ) always clobbers reg byte a -Statement [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 [ main::b#2 print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 ] ( main:2 [ main::b#2 print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 ] ) always clobbers reg byte a -Statement [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 [ print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ( main:2 [ print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ) always clobbers reg byte a -Statement [8] (signed word) print_sword::w#1 ← (signed word) main::a#1 [ print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ( main:2 [ print_char_cursor#44 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ) always clobbers reg byte a -Statement [12] (word) print_word::w#1 ← (word) main::b#1 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#12 ] ( main:2 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [19] (byte*~) print_char_cursor#59 ← (byte*) print_line_cursor#1 [ main::a#1 main::b#1 print_char_cursor#59 print_line_cursor#1 main::i#1 ] ( main:2 [ main::a#1 main::b#1 print_char_cursor#59 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a -Statement [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_char_cursor#42 print_byte::b#0 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#42 print_byte::b#0 ] main:2::print_sword:9::print_word:49 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#42 print_byte::b#0 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_byte::b#1 ] main:2::print_sword:9::print_word:49 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#43 print_byte::$0 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#43 print_byte::$0 ] main:2::print_sword:9::print_word:49::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#43 print_byte::$0 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#43 print_byte::$0 ] main:2::print_sword:9::print_word:49::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#43 print_byte::$0 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:9::print_word:49::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#12 print_byte::$2 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:9::print_word:49::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [40] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 [ print_char_cursor#31 ] ( main:2::print_char:11 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#31 ] main:2::print_word:13::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#31 ] main:2::print_sword:9::print_word:49::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#31 ] main:2::print_word:13::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#31 ] main:2::print_sword:9::print_word:49::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#31 ] main:2::print_word:13::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#31 ] main:2::print_sword:9::print_word:49::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#31 ] main:2::print_word:13::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#31 ] main:2::print_sword:9::print_word:49::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#31 ] main:2::print_sword:9::print_char:45 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#31 ] ) always clobbers reg byte y -Statement [43] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 [ print_char_cursor#44 print_sword::w#1 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#44 print_sword::w#1 ] ) always clobbers reg byte a -Statement [46] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#12 print_sword::w#0 ] ) always clobbers reg byte a -Statement [48] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 [ print_word::w#0 print_char_cursor#40 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#0 print_char_cursor#40 ] ) always clobbers reg byte a +Statement [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#47 print_sword::w#1 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#47 print_sword::w#1 ] ) always clobbers reg byte a +Statement [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a +Statement [6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ( main:2 [ main::b#2 print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 ] ) always clobbers reg byte a +Statement [7] (word) main::b#1 ← (word) main::b#2 + (word) $141 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 ] ) always clobbers reg byte a +Statement [8] (signed word) print_sword::w#1 ← (signed word) main::a#1 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ( main:2 [ print_char_cursor#47 print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 ] ) always clobbers reg byte a +Statement [12] (word) print_word::w#1 ← (word) main::b#1 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ( main:2 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [19] (byte*~) print_char_cursor#57 ← (byte*) print_line_cursor#1 [ main::a#1 main::b#1 print_char_cursor#57 print_line_cursor#1 main::i#1 ] ( main:2 [ main::a#1 main::b#1 print_char_cursor#57 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a +Statement [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:15 [ main::i#2 main::a#1 main::b#1 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a +Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_char_cursor#13 print_word::w#2 print_byte::b#0 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#2 print_byte::b#0 ] main:2::print_sword:9::print_word:48 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#2 print_byte::b#0 ] ) always clobbers reg byte a +Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ print_char_cursor#13 print_byte::b#1 ] ( main:2::print_word:13 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#1 ] main:2::print_sword:9::print_word:48 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#1 ] ) always clobbers reg byte a +Statement [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#13 print_byte::$2 ] ( main:2::print_word:13::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:9::print_word:48::print_byte:27 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#13 print_byte::$2 ] main:2::print_word:13::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] main:2::print_sword:9::print_word:48::print_byte:29 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_byte::$2 ] ) always clobbers reg byte a +Statement [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 [ print_char_cursor#33 ] ( main:2::print_char:11 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_word:13::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:27::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_byte::b#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:29::print_char:34 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_byte::b#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:27::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_word::w#2 print_char_cursor#33 ] main:2::print_word:13::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_sword:9::print_word:48::print_byte:29::print_char:37 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#33 ] main:2::print_sword:9::print_char:45 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] main:2::print_sword:9::print_char:51 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_sword::w#1 print_char_cursor#33 ] ) always clobbers reg byte y +Statement [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#47 print_sword::w#1 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#47 print_sword::w#1 ] ) always clobbers reg byte a +Statement [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 [ print_char_cursor#13 print_word::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_word::w#0 ] ) always clobbers reg byte a +Statement [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ print_char_cursor#13 print_sword::w#0 ] ( main:2::print_sword:9 [ print_line_cursor#13 main::i#2 main::a#1 main::b#1 print_char_cursor#13 print_sword::w#0 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ main::a#2 main::a#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ main::b#2 main::b#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ main::i#2 main::i#1 ] : zp ZP_BYTE:6 , reg byte x , Potential registers zp ZP_WORD:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] : zp ZP_WORD:7 , Potential registers zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] : zp ZP_WORD:9 , Potential registers zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:11 , reg byte x , -Potential registers zp ZP_BYTE:12 [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:13 [ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] : zp ZP_WORD:13 , -Potential registers zp ZP_WORD:15 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] : zp ZP_WORD:15 , +Potential registers zp ZP_BYTE:12 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] : zp ZP_WORD:13 , +Potential registers zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] : zp ZP_WORD:15 , Potential registers zp ZP_BYTE:17 [ print_byte::$0 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:18 [ print_byte::$2 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 251.61: zp ZP_WORD:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] 52.74: zp ZP_WORD:13 [ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] +Uplift Scope [] 251.61: zp ZP_WORD:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] 39.22: zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] Uplift Scope [main] 24.54: zp ZP_WORD:2 [ main::a#2 main::a#1 ] 13.75: zp ZP_WORD:4 [ main::b#2 main::b#1 ] 13: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] Uplift Scope [print_word] 31.67: zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] Uplift Scope [print_byte] 10: zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:17 [ print_byte::$0 ] 4: zp ZP_BYTE:18 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:12 [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -Uplift Scope [print_sword] 12.25: zp ZP_WORD:15 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:12 [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplift Scope [print_sword] 10.83: zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Uplift Scope [print_ln] -Uplifting [] best 6227 combination zp ZP_WORD:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] zp ZP_WORD:13 [ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] -Uplifting [main] best 6137 combination zp ZP_WORD:2 [ main::a#2 main::a#1 ] zp ZP_WORD:4 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] -Uplifting [print_word] best 6137 combination zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] -Uplifting [print_byte] best 6129 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 6114 combination reg byte a [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -Uplifting [print_sword] best 6114 combination zp ZP_WORD:15 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_ln] best 6114 combination +Uplifting [] best 6244 combination zp ZP_WORD:7 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] zp ZP_WORD:13 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] +Uplifting [main] best 6154 combination zp ZP_WORD:2 [ main::a#2 main::a#1 ] zp ZP_WORD:4 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [print_word] best 6154 combination zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] +Uplifting [print_byte] best 6146 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_char] best 6128 combination reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_sword] best 6128 combination zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] +Uplifting [print_ln] best 6128 combination Attempting to uplift remaining variables inzp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Uplifting [print_byte] best 6114 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] ] with [ zp ZP_WORD:15 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] ] - score: 1 +Uplifting [print_byte] best 6128 combination zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_word::w#2 print_word::w#1 print_word::w#0 ] ] with [ zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] - score: 1 Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated (was zp ZP_WORD:13) zp ZP_WORD:11 [ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] +Allocated (was zp ZP_WORD:13) zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -1247,7 +1276,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [5] phi (byte*) print_char_cursor#44 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG14 [5] phi (byte*) print_char_cursor#47 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -1303,8 +1332,8 @@ main: { //SEG24 [11] call print_char //SEG25 [39] phi from main::@2 to print_char [phi:main::@2->print_char] print_char_from_b2: - //SEG26 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#12 [phi:main::@2->print_char#0] -- register_copy - //SEG27 [39] phi (byte) print_char::ch#4 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuaa=vbuc1 + //SEG26 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:main::@2->print_char#0] -- register_copy + //SEG27 [39] phi (byte) print_char::ch#5 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b3 @@ -1318,58 +1347,57 @@ main: { //SEG30 [13] call print_word //SEG31 [25] phi from main::@3 to print_word [phi:main::@3->print_word] print_word_from_b3: - //SEG32 [25] phi (byte*) print_char_cursor#42 = (byte*) print_char_cursor#12 [phi:main::@3->print_word#0] -- register_copy - //SEG33 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:main::@3->print_word#1] -- register_copy + //SEG32 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:main::@3->print_word#0] -- register_copy jsr print_word - //SEG34 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG33 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG35 main::@4 + //SEG34 main::@4 b4: - //SEG36 [15] call print_ln - //SEG37 [20] phi from main::@4 to print_ln [phi:main::@4->print_ln] + //SEG35 [15] call print_ln + //SEG36 [20] phi from main::@4 to print_ln [phi:main::@4->print_ln] print_ln_from_b4: jsr print_ln jmp b5 - //SEG38 main::@5 + //SEG37 main::@5 b5: - //SEG39 [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG38 [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG40 [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG39 [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #6 bne b6 jmp breturn - //SEG41 main::@return + //SEG40 main::@return breturn: - //SEG42 [18] return + //SEG41 [18] return rts - //SEG43 main::@6 + //SEG42 main::@6 b6: - //SEG44 [19] (byte*~) print_char_cursor#59 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG43 [19] (byte*~) print_char_cursor#57 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG45 [5] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG44 [5] phi from main::@6 to main::@1 [phi:main::@6->main::@1] b1_from_b6: - //SEG46 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy - //SEG47 [5] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG48 [5] phi (byte*) print_char_cursor#44 = (byte*~) print_char_cursor#59 [phi:main::@6->main::@1#2] -- register_copy - //SEG49 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@6->main::@1#3] -- register_copy - //SEG50 [5] phi (signed word) main::a#2 = (signed word) main::a#1 [phi:main::@6->main::@1#4] -- register_copy + //SEG45 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy + //SEG46 [5] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy + //SEG47 [5] phi (byte*) print_char_cursor#47 = (byte*~) print_char_cursor#57 [phi:main::@6->main::@1#2] -- register_copy + //SEG48 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@6->main::@1#3] -- register_copy + //SEG49 [5] phi (signed word) main::a#2 = (signed word) main::a#1 [phi:main::@6->main::@1#4] -- register_copy jmp b1 } -//SEG51 print_ln +//SEG50 print_ln // Print a newline print_ln: { - //SEG52 [21] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG51 [21] 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: - //SEG53 [21] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG52 [21] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG54 print_ln::@1 + //SEG53 print_ln::@1 b1: - //SEG55 [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG54 [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -1377,7 +1405,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG56 [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG55 [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1387,126 +1415,154 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG57 print_ln::@return + //SEG56 print_ln::@return breturn: - //SEG58 [24] return + //SEG57 [24] return rts } -//SEG59 print_word +//SEG58 print_word // Print a word as HEX // print_word(word zeropage(8) w) print_word: { .label w = 8 - //SEG60 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 + //SEG59 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG61 [27] call print_byte - //SEG62 [31] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG60 [27] call print_byte + //SEG61 [31] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG63 [31] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#42 [phi:print_word->print_byte#0] -- register_copy - //SEG64 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG62 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte jmp b1 - //SEG65 print_word::@1 + //SEG63 print_word::@1 b1: - //SEG66 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 + //SEG64 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG67 [29] call print_byte - //SEG68 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG65 [29] call print_byte + //SEG66 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG69 [31] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG70 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG67 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte jmp breturn - //SEG71 print_word::@return + //SEG68 print_word::@return breturn: - //SEG72 [30] return + //SEG69 [30] return rts } -//SEG73 print_byte +//SEG70 print_byte // Print a byte as HEX // print_byte(byte zeropage($a) b) print_byte: { .label b = $a - //SEG74 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + //SEG71 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG75 [33] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG72 [33] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG76 [34] call print_char - //SEG77 [39] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG73 [34] call print_char + //SEG74 [39] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG78 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#43 [phi:print_byte->print_char#0] -- register_copy - //SEG79 [39] phi (byte) print_char::ch#4 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG75 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG76 [39] phi (byte) print_char::ch#5 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG80 print_byte::@1 + //SEG77 print_byte::@1 b1: - //SEG81 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG78 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG82 [36] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG79 [36] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG83 [37] call print_char - //SEG84 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG80 [37] call print_char + //SEG81 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG85 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG86 [39] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG82 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG83 [39] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG87 print_byte::@return + //SEG84 print_byte::@return breturn: - //SEG88 [38] return + //SEG85 [38] return rts } -//SEG89 print_char +//SEG86 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG90 [40] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG87 [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG91 [41] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#31 -- pbuz1=_inc_pbuz1 + //SEG88 [41] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG92 print_char::@return + //SEG89 print_char::@return breturn: - //SEG93 [42] return + //SEG90 [42] return rts } -//SEG94 print_sword +//SEG91 print_sword // Print a signed word as HEX // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - //SEG95 [43] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG92 [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1_from_print_sword - //SEG96 [44] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - b2_from_print_sword: + bmi b1_from_print_sword + //SEG93 [44] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + b3_from_print_sword: + jmp b3 + //SEG94 print_sword::@3 + b3: + //SEG95 [45] call print_char + //SEG96 [39] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + print_char_from_b3: + //SEG97 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#47 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG98 [39] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG99 [46] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + b2_from_b3: + b2_from_b4: + //SEG100 [46] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy jmp b2 - //SEG97 print_sword::@2 + //SEG101 print_sword::@2 b2: - //SEG98 [45] call print_char - //SEG99 [39] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - print_char_from_b2: - //SEG100 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#44 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG101 [39] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG102 [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG103 [48] call print_word + //SEG104 [25] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + print_word_from_b2: + //SEG105 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_sword::@2->print_word#0] -- register_copy + jsr print_word + jmp breturn + //SEG106 print_sword::@return + breturn: + //SEG107 [49] return + rts + //SEG108 [50] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + b1_from_print_sword: + jmp b1 + //SEG109 print_sword::@1 + b1: + //SEG110 [51] call print_char + //SEG111 [39] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + print_char_from_b1: + //SEG112 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#47 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG113 [39] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - jmp b3 - //SEG102 print_sword::@3 - b3: - //SEG103 [46] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + jmp b4 + //SEG114 print_sword::@4 + b4: + //SEG115 [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -1514,28 +1570,9 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG104 [47] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - b1_from_print_sword: - b1_from_b3: - //SEG105 [47] phi (byte*) print_char_cursor#40 = (byte*) print_char_cursor#44 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG106 [47] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - jmp b1 - //SEG107 print_sword::@1 - b1: - //SEG108 [48] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG109 [49] call print_word - //SEG110 [25] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - print_word_from_b1: - //SEG111 [25] phi (byte*) print_char_cursor#42 = (byte*) print_char_cursor#40 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG112 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - //SEG113 print_sword::@return - breturn: - //SEG114 [50] return - rts + jmp b2_from_b4 } -//SEG115 File Data +//SEG116 File Data print_hextab: .text "0123456789abcdef" ASSEMBLER OPTIMIZATIONS @@ -1554,14 +1591,16 @@ Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 -Removing instruction jmp b1 +Removing instruction jmp b2 Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b4 Succesful ASM optimization Pass5NextJumpElimination Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_print_sword with b1 +Replacing label b2_from_b4 with b2 Removing instruction b1_from_bbegin: Removing instruction b1: Removing instruction main_from_b1: @@ -1572,11 +1611,13 @@ Removing instruction b4_from_b3: Removing instruction print_ln_from_b4: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: -Removing instruction b2_from_print_sword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: +Removing instruction print_word_from_b2: Removing instruction b1_from_print_sword: -Removing instruction b1_from_b3: -Removing instruction print_word_from_b1: +Removing instruction print_char_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bend: Removing instruction b1_from_main: @@ -1597,9 +1638,9 @@ Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: Succesful ASM optimization Pass5UnusedLabelElimination Updating BasicUpstart to call main directly Removing instruction jsr main @@ -1640,17 +1681,14 @@ FINAL SYMBOL TABLE (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#5 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:11 5.240000000000001 -(byte*) print_char_cursor#31 print_char_cursor zp ZP_WORD:11 10.5 -(byte*) print_char_cursor#40 print_char_cursor zp ZP_WORD:11 3.0 -(byte*) print_char_cursor#42 print_char_cursor zp ZP_WORD:11 7.5 -(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:11 2.0 -(byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:11 2.5 -(byte*~) print_char_cursor#59 print_char_cursor zp ZP_WORD:11 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:11 3.5757575757575757 +(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:11 11.5 +(byte*) print_char_cursor#47 print_char_cursor zp ZP_WORD:11 2.142857142857143 +(byte*~) print_char_cursor#57 print_char_cursor zp ZP_WORD:11 22.0 (byte[]) print_hextab (const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor @@ -1665,11 +1703,12 @@ FINAL SYMBOL TABLE (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:8 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:8 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:8 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:8 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -1682,16 +1721,16 @@ zp ZP_WORD:2 [ main::a#2 main::a#1 ] zp ZP_WORD:4 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:6 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] -zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:11 [ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] +reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] FINAL ASSEMBLER -Score: 5337 +Score: 5348 //SEG0 File Comments // Tests the special "signed" / "unsigned" without a simple type name @@ -1721,7 +1760,7 @@ main: { sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG14 [5] phi (byte*) print_char_cursor#44 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + //SEG14 [5] phi (byte*) print_char_cursor#47 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 @@ -1772,8 +1811,8 @@ main: { //SEG23 main::@2 //SEG24 [11] call print_char //SEG25 [39] phi from main::@2 to print_char [phi:main::@2->print_char] - //SEG26 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#12 [phi:main::@2->print_char#0] -- register_copy - //SEG27 [39] phi (byte) print_char::ch#4 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuaa=vbuc1 + //SEG26 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:main::@2->print_char#0] -- register_copy + //SEG27 [39] phi (byte) print_char::ch#5 = (byte) ' ' [phi:main::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char //SEG28 main::@3 @@ -1784,46 +1823,45 @@ main: { sta print_word.w+1 //SEG30 [13] call print_word //SEG31 [25] phi from main::@3 to print_word [phi:main::@3->print_word] - //SEG32 [25] phi (byte*) print_char_cursor#42 = (byte*) print_char_cursor#12 [phi:main::@3->print_word#0] -- register_copy - //SEG33 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:main::@3->print_word#1] -- register_copy + //SEG32 [25] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:main::@3->print_word#0] -- register_copy jsr print_word - //SEG34 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG35 main::@4 - //SEG36 [15] call print_ln - //SEG37 [20] phi from main::@4 to print_ln [phi:main::@4->print_ln] + //SEG33 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG34 main::@4 + //SEG35 [15] call print_ln + //SEG36 [20] phi from main::@4 to print_ln [phi:main::@4->print_ln] jsr print_ln - //SEG38 main::@5 - //SEG39 [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG37 main::@5 + //SEG38 [16] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG40 [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG39 [17] if((byte) main::i#1!=(byte) 6) goto main::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #6 bne b6 - //SEG41 main::@return - //SEG42 [18] return + //SEG40 main::@return + //SEG41 [18] return rts - //SEG43 main::@6 + //SEG42 main::@6 b6: - //SEG44 [19] (byte*~) print_char_cursor#59 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG43 [19] (byte*~) print_char_cursor#57 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG45 [5] phi from main::@6 to main::@1 [phi:main::@6->main::@1] - //SEG46 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy - //SEG47 [5] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG48 [5] phi (byte*) print_char_cursor#44 = (byte*~) print_char_cursor#59 [phi:main::@6->main::@1#2] -- register_copy - //SEG49 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@6->main::@1#3] -- register_copy - //SEG50 [5] phi (signed word) main::a#2 = (signed word) main::a#1 [phi:main::@6->main::@1#4] -- register_copy + //SEG44 [5] phi from main::@6 to main::@1 [phi:main::@6->main::@1] + //SEG45 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy + //SEG46 [5] phi (byte*) print_line_cursor#13 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy + //SEG47 [5] phi (byte*) print_char_cursor#47 = (byte*~) print_char_cursor#57 [phi:main::@6->main::@1#2] -- register_copy + //SEG48 [5] phi (word) main::b#2 = (word) main::b#1 [phi:main::@6->main::@1#3] -- register_copy + //SEG49 [5] phi (signed word) main::a#2 = (signed word) main::a#1 [phi:main::@6->main::@1#4] -- register_copy jmp b1 } -//SEG51 print_ln +//SEG50 print_ln // Print a newline print_ln: { - //SEG52 [21] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG53 [21] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG54 print_ln::@1 + //SEG51 [21] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG52 [21] phi (byte*) print_line_cursor#6 = (byte*) print_line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG53 print_ln::@1 b1: - //SEG55 [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG54 [22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -1831,7 +1869,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG56 [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG55 [23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -1840,105 +1878,124 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG57 print_ln::@return - //SEG58 [24] return + //SEG56 print_ln::@return + //SEG57 [24] return rts } -//SEG59 print_word +//SEG58 print_word // Print a word as HEX // print_word(word zeropage(8) w) print_word: { .label w = 8 - //SEG60 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 + //SEG59 [26] (byte) print_byte::b#0 ← > (word) print_word::w#2 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG61 [27] call print_byte - //SEG62 [31] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG63 [31] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#42 [phi:print_word->print_byte#0] -- register_copy - //SEG64 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG60 [27] call print_byte + //SEG61 [31] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG62 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#0] -- register_copy jsr print_byte - //SEG65 print_word::@1 - //SEG66 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 + //SEG63 print_word::@1 + //SEG64 [28] (byte) print_byte::b#1 ← < (word) print_word::w#2 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG67 [29] call print_byte - //SEG68 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG69 [31] phi (byte*) print_char_cursor#43 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG70 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG65 [29] call print_byte + //SEG66 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG67 [31] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#0] -- register_copy jsr print_byte - //SEG71 print_word::@return - //SEG72 [30] return + //SEG68 print_word::@return + //SEG69 [30] return rts } -//SEG73 print_byte +//SEG70 print_byte // Print a byte as HEX // print_byte(byte zeropage($a) b) print_byte: { .label b = $a - //SEG74 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + //SEG71 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG75 [33] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG72 [33] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG76 [34] call print_char - //SEG77 [39] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG78 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#43 [phi:print_byte->print_char#0] -- register_copy - //SEG79 [39] phi (byte) print_char::ch#4 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + //SEG73 [34] call print_char + //SEG74 [39] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG75 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:print_byte->print_char#0] -- register_copy + //SEG76 [39] phi (byte) print_char::ch#5 = (byte) print_char::ch#2 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG80 print_byte::@1 - //SEG81 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG77 print_byte::@1 + //SEG78 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG82 [36] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG79 [36] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG83 [37] call print_char - //SEG84 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG85 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG86 [39] phi (byte) print_char::ch#4 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG80 [37] call print_char + //SEG81 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG82 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#13 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG83 [39] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG87 print_byte::@return - //SEG88 [38] return + //SEG84 print_byte::@return + //SEG85 [38] return rts } -//SEG89 print_char +//SEG86 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG90 [40] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4 -- _deref_pbuz1=vbuaa + //SEG87 [40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG91 [41] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#31 -- pbuz1=_inc_pbuz1 + //SEG88 [41] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#33 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG92 print_char::@return - //SEG93 [42] return + //SEG89 print_char::@return + //SEG90 [42] return rts } -//SEG94 print_sword +//SEG91 print_sword // Print a signed word as HEX // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - //SEG95 [43] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG92 [43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 - bpl b1 - //SEG96 [44] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG97 print_sword::@2 - //SEG98 [45] call print_char - //SEG99 [39] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG100 [39] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#44 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG101 [39] phi (byte) print_char::ch#4 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + bmi b1 + //SEG93 [44] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + //SEG94 print_sword::@3 + //SEG95 [45] call print_char + //SEG96 [39] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + //SEG97 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#47 [phi:print_sword::@3->print_char#0] -- register_copy + //SEG98 [39] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + //SEG99 [46] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + //SEG100 [46] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + //SEG101 print_sword::@2 + b2: + //SEG102 [47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4 + //SEG103 [48] call print_word + //SEG104 [25] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + //SEG105 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_sword::@2->print_word#0] -- register_copy + jsr print_word + //SEG106 print_sword::@return + //SEG107 [49] return + rts + //SEG108 [50] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + //SEG109 print_sword::@1 + b1: + //SEG110 [51] call print_char + //SEG111 [39] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + //SEG112 [39] phi (byte*) print_char_cursor#33 = (byte*) print_char_cursor#47 [phi:print_sword::@1->print_char#0] -- register_copy + //SEG113 [39] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG102 print_sword::@3 - //SEG103 [46] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 + //SEG114 print_sword::@4 + //SEG115 [52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -1946,21 +2003,8 @@ print_sword: { lda #0 sbc w+1 sta w+1 - //SEG104 [47] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG105 [47] phi (byte*) print_char_cursor#40 = (byte*) print_char_cursor#44 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG106 [47] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG107 print_sword::@1 - b1: - //SEG108 [48] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3 - //SEG109 [49] call print_word - //SEG110 [25] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG111 [25] phi (byte*) print_char_cursor#42 = (byte*) print_char_cursor#40 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG112 [25] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:print_sword::@1->print_word#1] -- register_copy - jsr print_word - //SEG113 print_sword::@return - //SEG114 [50] return - rts + jmp b2 } -//SEG115 File Data +//SEG116 File Data print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/type-signed.sym b/src/test/ref/type-signed.sym index 27c4b49bd..0bd04ed16 100644 --- a/src/test/ref/type-signed.sym +++ b/src/test/ref/type-signed.sym @@ -30,17 +30,14 @@ (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#1 reg byte a 4.0 (byte) print_char::ch#2 reg byte a 4.0 -(byte) print_char::ch#4 reg byte a 6.0 +(byte) print_char::ch#3 reg byte a 4.0 +(byte) print_char::ch#5 reg byte a 6.0 (byte*) print_char_cursor -(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:11 5.240000000000001 -(byte*) print_char_cursor#31 print_char_cursor zp ZP_WORD:11 10.5 -(byte*) print_char_cursor#40 print_char_cursor zp ZP_WORD:11 3.0 -(byte*) print_char_cursor#42 print_char_cursor zp ZP_WORD:11 7.5 -(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:11 2.0 -(byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:11 2.5 -(byte*~) print_char_cursor#59 print_char_cursor zp ZP_WORD:11 22.0 +(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:11 3.5757575757575757 +(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:11 11.5 +(byte*) print_char_cursor#47 print_char_cursor zp ZP_WORD:11 2.142857142857143 +(byte*~) print_char_cursor#57 print_char_cursor zp ZP_WORD:11 22.0 (byte[]) print_hextab (const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor @@ -55,11 +52,12 @@ (label) print_sword::@1 (label) print_sword::@2 (label) print_sword::@3 +(label) print_sword::@4 (label) print_sword::@return (signed word) print_sword::w (signed word) print_sword::w#0 w zp ZP_WORD:8 4.0 -(signed word) print_sword::w#1 w zp ZP_WORD:8 4.25 -(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0 +(signed word) print_sword::w#1 w zp ZP_WORD:8 2.8333333333333335 +(signed word) print_sword::w#4 w zp ZP_WORD:8 4.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -72,9 +70,9 @@ zp ZP_WORD:2 [ main::a#2 main::a#1 ] zp ZP_WORD:4 [ main::b#2 main::b#1 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:6 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] -zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ] zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:11 [ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ] +reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ] +zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ]