diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vwuz2_dword_vbuc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vwuz2_dword_vbuc1.asm new file mode 100644 index 000000000..a704a0e79 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vwuz2_dword_vbuc1.asm @@ -0,0 +1,8 @@ +lda #<{c1} +sta {z1} +lda #>{c1} +sta {z1}+1 +lda {z2} +sta {z1}+2 +lda {z2}+1 +sta {z1}+3 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_minus_1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_minus_1.asm new file mode 100644 index 000000000..6c7420657 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_minus_1.asm @@ -0,0 +1,7 @@ +lda {z2} +sec +sbc #1 +sta {z1} +lda {z2}+1 +sbc #0 +sta {z1}+1 diff --git a/src/test/java/dk/camelot64/kickc/test/kc/linegen.kc b/src/test/java/dk/camelot64/kickc/test/kc/linegen.kc index 9a25045fa..c623826b8 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/linegen.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/linegen.kc @@ -4,15 +4,29 @@ import "division.kc" import "print.kc" void main() { - word[20] lintab; - lin16u_gen(557, 29793, lintab, 20); + word[20] lintab1; + lin16u_gen(557, 29793, lintab1, 20); + word[20] lintab2; + lin16u_gen(31179, 63361, lintab2, 20); print_cls(); + print_str(" @"); + print_word(557); + print_str(" @"); + print_word(31179); + print_ln(); for(byte i=0; i<20*2; i=i+2) { print_byte(i); print_str(" @"); - print_word(lintab[i]); + print_word(lintab1[i]); + print_str(" @"); + print_word(lintab2[i]); print_ln(); } + print_str(" @"); + print_word(29793); + print_str(" @"); + print_word(63361); + print_ln(); } // Generate word linear table diff --git a/src/test/java/dk/camelot64/kickc/test/ref/linegen.asm b/src/test/java/dk/camelot64/kickc/test/ref/linegen.asm index 4df59f4d2..3e0eb8408 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/linegen.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/linegen.asm @@ -2,32 +2,108 @@ :BasicUpstart(main) .pc = $80d "Program" .label SCREEN = $400 - .label rem16u = 5 - .label char_cursor = 5 + .label char_cursor = 7 .label line_cursor = 3 + .label rem16u = 3 jsr main main: { .label i = 2 + lda #lintab1 + sta lin16u_gen.lintab+1 + lda #<0 + sta rem16u + sta rem16u+1 + lda #<$14 + sta lin16u_gen.length + lda #>$14 + sta lin16u_gen.length+1 + lda #<$22d + sta lin16u_gen.min + lda #>$22d + sta lin16u_gen.min+1 + lda #<$7461 + sta lin16u_gen.max + lda #>$7461 + sta lin16u_gen.max+1 + jsr lin16u_gen + lda #lintab2 + sta lin16u_gen.lintab+1 + lda #<$14 + sta lin16u_gen.length + lda #>$14 + sta lin16u_gen.length+1 + lda #<$79cb + sta lin16u_gen.min + lda #>$79cb + sta lin16u_gen.min+1 + lda #<$f781 + sta lin16u_gen.max + lda #>$f781 + sta lin16u_gen.max+1 jsr lin16u_gen jsr print_cls lda #SCREEN - sta line_cursor+1 - lda #SCREEN sta char_cursor+1 + lda #str + sta print_str.str+1 + jsr print_str + lda #<$22d + sta print_word.w + lda #>$22d + sta print_word.w+1 + jsr print_word + lda #str1 + sta print_str.str+1 + jsr print_str + lda #<$79cb + sta print_word.w + lda #>$79cb + sta print_word.w+1 + jsr print_word + lda #SCREEN + sta line_cursor+1 + jsr print_ln lda #0 sta i b1: ldx i + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 jsr print_byte + lda #str2 + sta print_str.str+1 jsr print_str ldy i - lda lintab,y + lda lintab1,y sta print_word.w - lda lintab+1,y + lda lintab1+1,y + sta print_word.w+1 + jsr print_word + lda #str3 + sta print_str.str+1 + jsr print_str + ldy i + lda lintab2,y + sta print_word.w + lda lintab2+1,y sta print_word.w+1 jsr print_word jsr print_ln @@ -36,16 +112,41 @@ main: { adc i sta i cmp #$14*2 - bcc b9 - rts - b9: + bcc b1 lda line_cursor sta char_cursor lda line_cursor+1 sta char_cursor+1 - jmp b1 - str: .text " @" - lintab: .fill $28, 0 + lda #str4 + sta print_str.str+1 + jsr print_str + lda #<$7461 + sta print_word.w + lda #>$7461 + sta print_word.w+1 + jsr print_word + lda #str5 + sta print_str.str+1 + jsr print_str + lda #<$f781 + sta print_word.w + lda #>$f781 + sta print_word.w+1 + jsr print_word + jsr print_ln + rts + str: .text " @" + str1: .text " @" + str2: .text " @" + str3: .text " @" + str4: .text " @" + str5: .text " @" + lintab1: .fill $28, 0 + lintab2: .fill $28, 0 } print_ln: { b1: @@ -67,7 +168,7 @@ print_ln: { rts } print_word: { - .label w = 7 + .label w = 5 lda w+1 tax jsr print_byte @@ -103,11 +204,7 @@ print_char: { rts } print_str: { - .label str = 7 - lda #main.str - sta str+1 + .label str = 5 b1: ldy #0 lda (str),y @@ -151,24 +248,34 @@ print_cls: { rts } lin16u_gen: { - .const min = $22d - .const max = $7461 - .const length = $14 - .const ampl = max-min - .label _5 = 7 - .label stepi = $f - .label stepf = $d - .label step = $11 + .label _5 = $f + .label ampl = 3 + .label stepi = $15 + .label stepf = $13 + .label step = $17 .label val = 9 - .label lintab = 3 + .label lintab = $d .label i = 5 - lda #length-1 + lda length+1 + sbc #0 sta divr16u.divisor+1 - lda #ampl + lda ampl+1 sta divr16u.dividend+1 lda #<0 sta divr16u.rem @@ -178,9 +285,12 @@ lin16u_gen: { sta stepi lda divr16u.return+1 sta stepi+1 - lda #length-1 + lda length+1 + sbc #0 sta divr16u.divisor+1 lda #<0 sta divr16u.dividend @@ -195,20 +305,15 @@ lin16u_gen: { lda stepf+1 sta step+1 lda #<0 + sta val + sta val+1 + lda min + sta val+2 + lda min+1 + sta val+3 + lda #<0 sta i sta i+1 - lda #main.lintab - sta lintab+1 - lda #min*$10000+0 - sta val+1 - lda #>$10 - sta val+2 - lda #>min*$10000+0>>$10 - sta val+3 b1: lda val+2 sta _5 @@ -245,21 +350,21 @@ lin16u_gen: { inc i+1 !: lda i+1 - cmp #>length + cmp length+1 bcc b1 bne !+ lda i - cmp # (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#0 char_cursor#2 ] ) - [27] call print_byte param-assignment [ print_word::w#0 char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] ) +print_word: scope:[print_word] from main::@12 main::@14 main::@17 main::@19 main::@6 main::@8 + [52] (word) print_word::w#6 ← phi( main::@12/(word) print_word::w#2 main::@14/(word) print_word::w#3 main::@17/(word/signed word/dword/signed dword) 29793 main::@19/(word/dword/signed dword) 63361 main::@6/(word/signed word/dword/signed dword) 557 main::@8/(word/signed word/dword/signed dword) 31179 ) [ print_word::w#6 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 char_cursor#2 ] ) + [53] (byte) print_byte::b#0 ← > (word) print_word::w#6 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] ) + [54] call print_byte param-assignment [ char_cursor#11 print_word::w#6 ] ( main:2::print_word:13 [ char_cursor#11 print_word::w#6 ] main:2::print_word:17 [ char_cursor#11 print_word::w#6 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_word::w#6 ] ) to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [28] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#1 ] ) - [29] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [55] (byte) print_byte::b#1 ← < (word) print_word::w#6 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:13 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:17 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] ) + [56] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [30] return [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [57] return [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) to:@return print_byte: scope:[print_byte] from main::@1 print_word print_word::@1 - [31] (byte*) char_cursor#45 ← phi( main::@1/(byte*) char_cursor#47 print_word/(byte*) char_cursor#2 print_word::@1/(byte*) char_cursor#11 ) [ print_byte::b#3 char_cursor#45 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 ] ) - [31] (byte) print_byte::b#3 ← phi( main::@1/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#3 char_cursor#45 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 ] ) - [32] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#45 print_byte::$0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] ) - [33] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#45 print_char::ch#0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] ) - [34] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] ) + [58] (byte*) char_cursor#69 ← phi( main::@1/(byte*~) char_cursor#77 print_word/(byte*) char_cursor#2 print_word::@1/(byte*) char_cursor#11 ) [ print_byte::b#3 char_cursor#69 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 ] ) + [58] (byte) print_byte::b#3 ← phi( main::@1/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#3 char_cursor#69 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 ] ) + [59] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] ) + [60] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] ) + [61] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [35] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] ) - [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] ) - [37] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [62] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] ) + [63] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] ) + [64] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [38] return [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [65] return [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) to:@return print_char: scope:[print_char] from print_byte print_byte::@1 - [39] (byte*) char_cursor#32 ← phi( print_byte/(byte*) char_cursor#45 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 print_char::ch#2 char_cursor#32 ] ) - [39] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 print_char::ch#2 char_cursor#32 ] ) - [40] *((byte*) char_cursor#32) ← (byte) print_char::ch#2 [ char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] ) - [41] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#32 [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [66] (byte*) char_cursor#44 ← phi( print_byte/(byte*) char_cursor#69 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 print_char::ch#2 char_cursor#44 ] ) + [66] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 print_char::ch#2 char_cursor#44 ] ) + [67] *((byte*) char_cursor#44) ← (byte) print_char::ch#2 [ char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] ) + [68] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#44 [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) to:print_char::@return print_char::@return: scope:[print_char] from print_char - [42] return [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [69] return [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) to:@return -print_str: scope:[print_str] from main::@5 - [43] phi() [ char_cursor#11 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#11 ] ) +print_str: scope:[print_str] from main::@11 main::@13 main::@18 main::@2 main::@5 main::@7 + [70] (byte*) char_cursor#74 ← phi( main::@11/(byte*) char_cursor#11 main::@13/(byte*) char_cursor#11 main::@18/(byte*) char_cursor#11 main::@2/(byte*~) char_cursor#85 main::@5/(const byte*) SCREEN#0 main::@7/(byte*) char_cursor#11 ) [ print_str::str#9 char_cursor#74 ] ( main:2::print_str:11 [ print_str::str#9 char_cursor#74 ] main:2::print_str:15 [ print_str::str#9 char_cursor#74 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:37 [ line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:41 [ line_cursor#1 print_str::str#9 char_cursor#74 ] ) + [70] (byte*) print_str::str#9 ← phi( main::@11/(const string) main::str2 main::@13/(const string) main::str3 main::@18/(const string) main::str5 main::@2/(const string) main::str4 main::@5/(const string) main::str main::@7/(const string) main::str1 ) [ print_str::str#9 char_cursor#74 ] ( main:2::print_str:11 [ print_str::str#9 char_cursor#74 ] main:2::print_str:15 [ print_str::str#9 char_cursor#74 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:37 [ line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:41 [ line_cursor#1 print_str::str#9 char_cursor#74 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [44] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#11 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) - [44] (byte*) print_str::str#2 ← phi( print_str/(const string) main::str print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) - [45] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) + [71] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#74 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) + [71] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) + [72] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [46] return [ char_cursor#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 ] ) + [73] return [ char_cursor#2 ] ( main:2::print_str:11 [ char_cursor#2 ] main:2::print_str:15 [ char_cursor#2 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 ] ) to:@return print_str::@2: scope:[print_str] from print_str::@1 - [47] *((byte*) char_cursor#2) ← *((byte*) print_str::str#2) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) - [48] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#2 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#2 char_cursor#1 ] ) - [49] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#0 char_cursor#1 ] ) + [74] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) + [75] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#7 char_cursor#1 ] main:2::print_str:15 [ print_str::str#7 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#7 char_cursor#1 ] ) + [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#0 char_cursor#1 ] main:2::print_str:15 [ print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#0 char_cursor#1 ] ) to:print_str::@1 -print_cls: scope:[print_cls] from main::@3 - [50] phi() [ ] ( main:2::print_cls:7 [ ] ) +print_cls: scope:[print_cls] from main::@4 + [77] phi() [ ] ( main:2::print_cls:9 [ ] ) to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [51] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) - [52] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) - [53] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) - [54] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) + [78] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) + [79] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) + [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) + [81] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [55] return [ ] ( main:2::print_cls:7 [ ] ) + [82] return [ ] ( main:2::print_cls:9 [ ] ) to:@return -lin16u_gen: scope:[lin16u_gen] from main - [56] phi() [ ] ( main:2::lin16u_gen:5 [ ] ) - [57] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 rem16u#1 ] ) - [58] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#2 rem16u#1 ] ) +lin16u_gen: scope:[lin16u_gen] from main main::@3 + [83] (word*) lin16u_gen::lintab#4 ← phi( main/(const word[20]) main::lintab1#0 main::@3/(const word[20]) main::lintab2#0 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [83] (word) rem16u#20 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(word) divr16u::rem#11 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [83] (word) lin16u_gen::length#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 20 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 20 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [83] (word) lin16u_gen::min#2 ← phi( main/(word/signed word/dword/signed dword) 557 main::@3/(word/signed word/dword/signed dword) 31179 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [83] (word) lin16u_gen::max#2 ← phi( main/(word/signed word/dword/signed dword) 29793 main::@3/(word/dword/signed dword) 63361 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [84] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#2 - (word) lin16u_gen::min#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] ) + [85] (word) divr16u::divisor#0 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] ) + [86] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] ) + [87] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ) + [88] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ) to:lin16u_gen::@3 lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen - [59] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#1 ] ) - [60] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ) - [61] call divr16u param-assignment [ divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 lin16u_gen::stepi#0 ] ) - [62] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] ) + [89] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ) + [90] (word) divr16u::divisor#1 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] ) + [91] (word) divr16u::rem#4 ← (word) divr16u::rem#11 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ) + [92] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ) + [93] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ) to:lin16u_gen::@4 lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3 - [63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) - [64] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 ] ) + [94] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) + [95] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ) + [96] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#2 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ) to:lin16u_gen::@1 lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@1 lin16u_gen::@4 - [65] (word) lin16u_gen::i#2 ← phi( lin16u_gen::@1/(word) lin16u_gen::i#1 lin16u_gen::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) - [65] (word*) lin16u_gen::lintab#2 ← phi( lin16u_gen::@1/(word*) lin16u_gen::lintab#1 lin16u_gen::@4/(const word[20]) main::lintab#0 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) - [65] (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@1/(dword) lin16u_gen::val#1 lin16u_gen::@4/(const word) lin16u_gen::min#0*(dword/signed dword) 65536+(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) - [66] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ) - [67] *((word*) lin16u_gen::lintab#2) ← (word~) lin16u_gen::$5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) - [68] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ) - [69] (word*) lin16u_gen::lintab#1 ← (word*) lin16u_gen::lintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ) - [70] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) - [71] if((word) lin16u_gen::i#1<(const word) lin16u_gen::length#0) goto lin16u_gen::@1 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) + [97] (word) lin16u_gen::i#2 ← phi( lin16u_gen::@1/(word) lin16u_gen::i#1 lin16u_gen::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) + [97] (word*) lin16u_gen::lintab#3 ← phi( lin16u_gen::@1/(word*) lin16u_gen::lintab#2 lin16u_gen::@4/(word*) lin16u_gen::lintab#4 ) [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) + [97] (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@1/(dword) lin16u_gen::val#1 lin16u_gen::@4/(dword) lin16u_gen::val#0 ) [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) + [98] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ) + [99] *((word*) lin16u_gen::lintab#3) ← (word~) lin16u_gen::$5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) + [100] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ) + [101] (word*) lin16u_gen::lintab#2 ← (word*) lin16u_gen::lintab#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ) + [102] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) + [103] if((word) lin16u_gen::i#1<(word) lin16u_gen::length#2) goto lin16u_gen::@1 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) to:lin16u_gen::@return lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1 - [72] return [ ] ( main:2::lin16u_gen:5 [ ] ) + [104] return [ divr16u::rem#11 ] ( main:2::lin16u_gen:5 [ divr16u::rem#11 ] main:2::lin16u_gen:7 [ divr16u::rem#11 ] ) to:@return divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3 - [73] (word) divr16u::divisor#6 ← phi( lin16u_gen/(const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 lin16u_gen::@3/(const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) - [73] (word) divr16u::dividend#5 ← phi( lin16u_gen/(const word) lin16u_gen::ampl#0 lin16u_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) - [73] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [105] (word) divr16u::divisor#6 ← phi( lin16u_gen/(word) divr16u::divisor#0 lin16u_gen::@3/(word) divr16u::divisor#1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [105] (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [105] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [74] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) - [74] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) - [74] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) - [74] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) - [75] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) - [76] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) - [77] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) - [78] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) + [106] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) + [106] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) + [106] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) + [106] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) + [107] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) + [108] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) + [109] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) + [110] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [79] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) + [111] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [80] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ) - [81] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) - [82] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) - [83] 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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) + [112] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ) + [113] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) + [114] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) + [115] 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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [84] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) - [85] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) + [116] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) + [117] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [86] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) - [86] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) - [87] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) - [88] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) - to:divr16u::@6 -divr16u::@6: scope:[divr16u] from divr16u::@3 - [89] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) + [118] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ) + [118] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ) + [119] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) + [120] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) to:divr16u::@return -divr16u::@return: scope:[divr16u] from divr16u::@6 - [90] return [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) +divr16u::@return: scope:[divr16u] from divr16u::@3 + [121] return [ divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] ) to:@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/linegen.log b/src/test/java/dk/camelot64/kickc/test/ref/linegen.log index 7c20bc325..c4459c8e2 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/linegen.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/linegen.log @@ -5,15 +5,29 @@ import "division.kc" import "print.kc" void main() { - word[20] lintab; - lin16u_gen(557, 29793, lintab, 20); + word[20] lintab1; + lin16u_gen(557, 29793, lintab1, 20); + word[20] lintab2; + lin16u_gen(31179, 63361, lintab2, 20); print_cls(); + print_str(" @"); + print_word(557); + print_str(" @"); + print_word(31179); + print_ln(); for(byte i=0; i<20*2; i=i+2) { print_byte(i); print_str(" @"); - print_word(lintab[i]); + print_word(lintab1[i]); + print_str(" @"); + print_word(lintab2[i]); print_ln(); } + print_str(" @"); + print_word(29793); + print_str(" @"); + print_word(63361); + print_ln(); } // Generate word linear table @@ -575,20 +589,34 @@ print_cls::@return: return endproc // print_cls() proc (void()) main() - (word[20]) main::lintab ← { fill( 20, 0) } - (void~) main::$0 ← call lin16u_gen (word/signed word/dword/signed dword) 557 (word/signed word/dword/signed dword) 29793 (word[20]) main::lintab (byte/signed byte/word/signed word/dword/signed dword) 20 - (void~) main::$1 ← call print_cls + (word[20]) main::lintab1 ← { fill( 20, 0) } + (void~) main::$0 ← call lin16u_gen (word/signed word/dword/signed dword) 557 (word/signed word/dword/signed dword) 29793 (word[20]) main::lintab1 (byte/signed byte/word/signed word/dword/signed dword) 20 + (word[20]) main::lintab2 ← { fill( 20, 0) } + (void~) main::$1 ← call lin16u_gen (word/signed word/dword/signed dword) 31179 (word/dword/signed dword) 63361 (word[20]) main::lintab2 (byte/signed byte/word/signed word/dword/signed dword) 20 + (void~) main::$2 ← call print_cls + (void~) main::$3 ← call print_str (string) " @" + (void~) main::$4 ← call print_word (word/signed word/dword/signed dword) 557 + (void~) main::$5 ← call print_str (string) " @" + (void~) main::$6 ← call print_word (word/signed word/dword/signed dword) 31179 + (void~) main::$7 ← call print_ln (byte) main::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 main::@1: - (void~) main::$2 ← call print_byte (byte) main::i - (void~) main::$3 ← call print_str (string) " @" - (void~) main::$4 ← call print_word *((word[20]) main::lintab + (byte) main::i) - (void~) main::$5 ← call print_ln - (byte/word~) main::$6 ← (byte) main::i + (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) main::i ← (byte/word~) main::$6 - (byte/signed byte/word/signed word/dword/signed dword~) main::$7 ← (byte/signed byte/word/signed word/dword/signed dword) 20 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (boolean~) main::$8 ← (byte) main::i < (byte/signed byte/word/signed word/dword/signed dword~) main::$7 - if((boolean~) main::$8) goto main::@1 + (void~) main::$8 ← call print_byte (byte) main::i + (void~) main::$9 ← call print_str (string) " @" + (void~) main::$10 ← call print_word *((word[20]) main::lintab1 + (byte) main::i) + (void~) main::$11 ← call print_str (string) " @" + (void~) main::$12 ← call print_word *((word[20]) main::lintab2 + (byte) main::i) + (void~) main::$13 ← call print_ln + (byte/word~) main::$14 ← (byte) main::i + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i ← (byte/word~) main::$14 + (byte/signed byte/word/signed word/dword/signed dword~) main::$15 ← (byte/signed byte/word/signed word/dword/signed dword) 20 * (byte/signed byte/word/signed word/dword/signed dword) 2 + (boolean~) main::$16 ← (byte) main::i < (byte/signed byte/word/signed word/dword/signed dword~) main::$15 + if((boolean~) main::$16) goto main::@1 + (void~) main::$17 ← call print_str (string) " @" + (void~) main::$18 ← call print_word (word/signed word/dword/signed dword) 29793 + (void~) main::$19 ← call print_str (string) " @" + (void~) main::$20 ← call print_word (word/dword/signed dword) 63361 + (void~) main::$21 ← call print_ln main::@return: return endproc // main() @@ -775,17 +803,31 @@ SYMBOLS (void()) main() (void~) main::$0 (void~) main::$1 +(void~) main::$10 +(void~) main::$11 +(void~) main::$12 +(void~) main::$13 +(byte/word~) main::$14 +(byte/signed byte/word/signed word/dword/signed dword~) main::$15 +(boolean~) main::$16 +(void~) main::$17 +(void~) main::$18 +(void~) main::$19 (void~) main::$2 +(void~) main::$20 +(void~) main::$21 (void~) main::$3 (void~) main::$4 (void~) main::$5 -(byte/word~) main::$6 -(byte/signed byte/word/signed word/dword/signed dword~) main::$7 -(boolean~) main::$8 +(void~) main::$6 +(void~) main::$7 +(void~) main::$8 +(void~) main::$9 (label) main::@1 (label) main::@return (byte) main::i -(word[20]) main::lintab +(word[20]) main::lintab1 +(word[20]) main::lintab2 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (void~) print_byte::$1 @@ -1300,23 +1342,37 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 @16: scope:[] from @15 to:@17 main: scope:[main] from - (word[20]) main::lintab ← { fill( 20, 0) } - (void~) main::$0 ← call lin16u_gen (word/signed word/dword/signed dword) 557 (word/signed word/dword/signed dword) 29793 (word[20]) main::lintab (byte/signed byte/word/signed word/dword/signed dword) 20 - (void~) main::$1 ← call print_cls + (word[20]) main::lintab1 ← { fill( 20, 0) } + (void~) main::$0 ← call lin16u_gen (word/signed word/dword/signed dword) 557 (word/signed word/dword/signed dword) 29793 (word[20]) main::lintab1 (byte/signed byte/word/signed word/dword/signed dword) 20 + (word[20]) main::lintab2 ← { fill( 20, 0) } + (void~) main::$1 ← call lin16u_gen (word/signed word/dword/signed dword) 31179 (word/dword/signed dword) 63361 (word[20]) main::lintab2 (byte/signed byte/word/signed word/dword/signed dword) 20 + (void~) main::$2 ← call print_cls + (void~) main::$3 ← call print_str (string) " @" + (void~) main::$4 ← call print_word (word/signed word/dword/signed dword) 557 + (void~) main::$5 ← call print_str (string) " @" + (void~) main::$6 ← call print_word (word/signed word/dword/signed dword) 31179 + (void~) main::$7 ← call print_ln (byte) main::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (void~) main::$2 ← call print_byte (byte) main::i - (void~) main::$3 ← call print_str (string) " @" - (void~) main::$4 ← call print_word *((word[20]) main::lintab + (byte) main::i) - (void~) main::$5 ← call print_ln - (byte/word~) main::$6 ← (byte) main::i + (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) main::i ← (byte/word~) main::$6 - (byte/signed byte/word/signed word/dword/signed dword~) main::$7 ← (byte/signed byte/word/signed word/dword/signed dword) 20 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (boolean~) main::$8 ← (byte) main::i < (byte/signed byte/word/signed word/dword/signed dword~) main::$7 - if((boolean~) main::$8) goto main::@1 + (void~) main::$8 ← call print_byte (byte) main::i + (void~) main::$9 ← call print_str (string) " @" + (void~) main::$10 ← call print_word *((word[20]) main::lintab1 + (byte) main::i) + (void~) main::$11 ← call print_str (string) " @" + (void~) main::$12 ← call print_word *((word[20]) main::lintab2 + (byte) main::i) + (void~) main::$13 ← call print_ln + (byte/word~) main::$14 ← (byte) main::i + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i ← (byte/word~) main::$14 + (byte/signed byte/word/signed word/dword/signed dword~) main::$15 ← (byte/signed byte/word/signed word/dword/signed dword) 20 * (byte/signed byte/word/signed word/dword/signed dword) 2 + (boolean~) main::$16 ← (byte) main::i < (byte/signed byte/word/signed word/dword/signed dword~) main::$15 + if((boolean~) main::$16) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 + (void~) main::$17 ← call print_str (string) " @" + (void~) main::$18 ← call print_word (word/signed word/dword/signed dword) 29793 + (void~) main::$19 ← call print_str (string) " @" + (void~) main::$20 ← call print_word (word/dword/signed dword) 63361 + (void~) main::$21 ← call print_ln to:main::@return main::@return: scope:[main] from main::@2 return @@ -1379,8 +1435,26 @@ Eliminating unused variable - keeping the call (void~) main::$2 Eliminating unused variable - keeping the call (void~) main::$3 Eliminating unused variable - keeping the call (void~) main::$4 Eliminating unused variable - keeping the call (void~) main::$5 +Eliminating unused variable - keeping the call (void~) main::$6 +Eliminating unused variable - keeping the call (void~) main::$7 +Eliminating unused variable - keeping the call (void~) main::$8 +Eliminating unused variable - keeping the call (void~) main::$9 +Eliminating unused variable - keeping the call (void~) main::$10 +Eliminating unused variable - keeping the call (void~) main::$11 +Eliminating unused variable - keeping the call (void~) main::$12 +Eliminating unused variable - keeping the call (void~) main::$13 +Eliminating unused variable - keeping the call (void~) main::$17 +Eliminating unused variable - keeping the call (void~) main::$18 +Eliminating unused variable - keeping the call (void~) main::$19 +Eliminating unused variable - keeping the call (void~) main::$20 +Eliminating unused variable - keeping the call (void~) main::$21 Creating constant string variable for inline (const string) print_byte::$4 "0123456789abcdef" -Creating constant string variable for inline (const string) main::str " @" +Creating constant string variable for inline (const string) main::str " @" +Creating constant string variable for inline (const string) main::str1 " @" +Creating constant string variable for inline (const string) main::str2 " @" +Creating constant string variable for inline (const string) main::str3 " @" +Creating constant string variable for inline (const string) main::str4 " @" +Creating constant string variable for inline (const string) main::str5 " @" Removing empty block @1 Removing empty block @3 Removing empty block divr16u::@7 @@ -1400,7 +1474,6 @@ Removing empty block @13 Removing empty block @14 Removing empty block @15 Removing empty block @16 -Removing empty block main::@2 Removing empty block @17 Removing empty block lin16u_gen::@2 PROCEDURE MODIFY VARIABLE ANALYSIS @@ -1418,6 +1491,19 @@ main modifies line_cursor main modifies char_cursor lin16u_gen modifies rem16u +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... Completing Phi functions... Completing Phi functions... Completing Phi functions... @@ -1503,89 +1589,89 @@ divr16u::@6: scope:[divr16u] from divr16u::@3 (word) divr16u::return#0 ← (word) divr16u::quotient#5 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - (word) rem16u#9 ← phi( divr16u::@6/(word) rem16u#1 ) + (word) rem16u#10 ← phi( divr16u::@6/(word) rem16u#1 ) (word) divr16u::return#4 ← phi( divr16u::@6/(word) divr16u::return#0 ) (word) divr16u::return#1 ← (word) divr16u::return#4 - (word) rem16u#2 ← (word) rem16u#9 + (word) rem16u#2 ← (word) rem16u#10 return to:@return @6: scope:[] from @2 - (word) rem16u#22 ← phi( @2/(word) rem16u#0 ) + (word) rem16u#24 ← phi( @2/(word) rem16u#0 ) (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) line_cursor#0 ← (byte*) SCREEN#0 (byte*) char_cursor#0 ← (byte*) line_cursor#0 to:@18 -print_str: scope:[print_str] from main::@5 - (byte*) char_cursor#49 ← phi( main::@5/(byte*) char_cursor#16 ) - (byte*) print_str::str#4 ← phi( main::@5/(byte*) print_str::str#1 ) +print_str: scope:[print_str] from main::@11 main::@13 main::@18 main::@2 main::@5 main::@7 + (byte*) char_cursor#74 ← phi( main::@11/(byte*) char_cursor#21 main::@13/(byte*) char_cursor#23 main::@18/(byte*) char_cursor#28 main::@2/(byte*) char_cursor#72 main::@5/(byte*) char_cursor#15 main::@7/(byte*) char_cursor#17 ) + (byte*) print_str::str#9 ← phi( main::@11/(byte*) print_str::str#3 main::@13/(byte*) print_str::str#4 main::@18/(byte*) print_str::str#6 main::@2/(byte*) print_str::str#5 main::@5/(byte*) print_str::str#1 main::@7/(byte*) print_str::str#2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) char_cursor#42 ← phi( print_str/(byte*) char_cursor#49 print_str::@2/(byte*) char_cursor#1 ) - (byte*) print_str::str#2 ← phi( print_str/(byte*) print_str::str#4 print_str::@2/(byte*) print_str::str#0 ) - (boolean~) print_str::$0 ← *((byte*) print_str::str#2) != (byte) '@' + (byte*) char_cursor#66 ← phi( print_str/(byte*) char_cursor#74 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#7) != (byte) '@' if((boolean~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) char_cursor#22 ← phi( print_str::@1/(byte*) char_cursor#42 ) - (byte*) print_str::str#3 ← phi( print_str::@1/(byte*) print_str::str#2 ) - *((byte*) char_cursor#22) ← *((byte*) print_str::str#3) - (byte*) char_cursor#1 ← ++ (byte*) char_cursor#22 - (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 + (byte*) char_cursor#34 ← phi( print_str::@1/(byte*) char_cursor#66 ) + (byte*) print_str::str#8 ← phi( print_str::@1/(byte*) print_str::str#7 ) + *((byte*) char_cursor#34) ← *((byte*) print_str::str#8) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#34 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#8 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) char_cursor#23 ← phi( print_str::@1/(byte*) char_cursor#42 ) - (byte*) char_cursor#2 ← (byte*) char_cursor#23 + (byte*) char_cursor#35 ← phi( print_str::@1/(byte*) char_cursor#66 ) + (byte*) char_cursor#2 ← (byte*) char_cursor#35 return to:@return -print_ln: scope:[print_ln] from main::@7 - (byte*) char_cursor#43 ← phi( main::@7/(byte*) char_cursor#18 ) - (byte*) line_cursor#17 ← phi( main::@7/(byte*) line_cursor#19 ) +print_ln: scope:[print_ln] from main::@15 main::@20 main::@9 + (byte*) char_cursor#67 ← phi( main::@15/(byte*) char_cursor#25 main::@20/(byte*) char_cursor#30 main::@9/(byte*) char_cursor#19 ) + (byte*) line_cursor#21 ← phi( main::@15/(byte*) line_cursor#24 main::@20/(byte*) line_cursor#25 main::@9/(byte*) line_cursor#23 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) char_cursor#24 ← phi( print_ln/(byte*) char_cursor#43 print_ln::@1/(byte*) char_cursor#24 ) - (byte*) line_cursor#9 ← phi( print_ln/(byte*) line_cursor#17 print_ln::@1/(byte*) line_cursor#1 ) - (byte*~) print_ln::$0 ← (byte*) line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte*) char_cursor#36 ← phi( print_ln/(byte*) char_cursor#67 print_ln::@1/(byte*) char_cursor#36 ) + (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#21 print_ln::@1/(byte*) line_cursor#1 ) + (byte*~) print_ln::$0 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 (byte*) line_cursor#1 ← (byte*~) print_ln::$0 - (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#24 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#36 if((boolean~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 - (byte*) line_cursor#10 ← phi( print_ln::@1/(byte*) line_cursor#1 ) - (byte*) char_cursor#3 ← (byte*) line_cursor#10 + (byte*) line_cursor#12 ← phi( print_ln::@1/(byte*) line_cursor#1 ) + (byte*) char_cursor#3 ← (byte*) line_cursor#12 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) char_cursor#25 ← phi( print_ln::@2/(byte*) char_cursor#3 ) - (byte*) line_cursor#11 ← phi( print_ln::@2/(byte*) line_cursor#10 ) - (byte*) line_cursor#2 ← (byte*) line_cursor#11 - (byte*) char_cursor#4 ← (byte*) char_cursor#25 + (byte*) char_cursor#37 ← phi( print_ln::@2/(byte*) char_cursor#3 ) + (byte*) line_cursor#13 ← phi( print_ln::@2/(byte*) line_cursor#12 ) + (byte*) line_cursor#2 ← (byte*) line_cursor#13 + (byte*) char_cursor#4 ← (byte*) char_cursor#37 return to:@return -print_word: scope:[print_word] from main::@6 - (byte*) char_cursor#44 ← phi( main::@6/(byte*) char_cursor#17 ) - (word) print_word::w#1 ← phi( main::@6/(word) print_word::w#0 ) - (byte~) print_word::$0 ← > (word) print_word::w#1 +print_word: scope:[print_word] from main::@12 main::@14 main::@17 main::@19 main::@6 main::@8 + (byte*) char_cursor#68 ← phi( main::@12/(byte*) char_cursor#22 main::@14/(byte*) char_cursor#24 main::@17/(byte*) char_cursor#27 main::@19/(byte*) char_cursor#29 main::@6/(byte*) char_cursor#16 main::@8/(byte*) char_cursor#18 ) + (word) print_word::w#6 ← phi( main::@12/(word) print_word::w#2 main::@14/(word) print_word::w#3 main::@17/(word) print_word::w#4 main::@19/(word) print_word::w#5 main::@6/(word) print_word::w#0 main::@8/(word) print_word::w#1 ) + (byte~) print_word::$0 ← > (word) print_word::w#6 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte param-assignment to:print_word::@1 print_word::@1: scope:[print_word] from print_word - (word) print_word::w#2 ← phi( print_word/(word) print_word::w#1 ) - (byte*) char_cursor#26 ← phi( print_word/(byte*) char_cursor#10 ) - (byte*) char_cursor#5 ← (byte*) char_cursor#26 - (byte~) print_word::$2 ← < (word) print_word::w#2 + (word) print_word::w#7 ← phi( print_word/(word) print_word::w#6 ) + (byte*) char_cursor#38 ← phi( print_word/(byte*) char_cursor#10 ) + (byte*) char_cursor#5 ← (byte*) char_cursor#38 + (byte~) print_word::$2 ← < (word) print_word::w#7 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte param-assignment to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) char_cursor#27 ← phi( print_word::@1/(byte*) char_cursor#10 ) - (byte*) char_cursor#6 ← (byte*) char_cursor#27 + (byte*) char_cursor#39 ← phi( print_word::@1/(byte*) char_cursor#10 ) + (byte*) char_cursor#6 ← (byte*) char_cursor#39 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) char_cursor#28 ← phi( print_word::@2/(byte*) char_cursor#6 ) - (byte*) char_cursor#7 ← (byte*) char_cursor#28 + (byte*) char_cursor#40 ← phi( print_word::@2/(byte*) char_cursor#6 ) + (byte*) char_cursor#7 ← (byte*) char_cursor#40 return to:@return print_byte: scope:[print_byte] from main::@1 print_word print_word::@1 - (byte*) char_cursor#45 ← phi( main::@1/(byte*) char_cursor#47 print_word/(byte*) char_cursor#44 print_word::@1/(byte*) char_cursor#5 ) + (byte*) char_cursor#69 ← phi( main::@1/(byte*) char_cursor#71 print_word/(byte*) char_cursor#68 print_word::@1/(byte*) char_cursor#5 ) (byte) print_byte::b#3 ← phi( main::@1/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte[]) print_byte::hextab#0 ← (const string) print_byte::$4 (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 @@ -1594,33 +1680,33 @@ print_byte: scope:[print_byte] from main::@1 print_word print_word::@1 to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#4 ← phi( print_byte/(byte) print_byte::b#3 ) - (byte*) char_cursor#29 ← phi( print_byte/(byte*) char_cursor#12 ) - (byte*) char_cursor#8 ← (byte*) char_cursor#29 + (byte*) char_cursor#41 ← phi( print_byte/(byte*) char_cursor#12 ) + (byte*) char_cursor#8 ← (byte*) char_cursor#41 (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) char_cursor#30 ← phi( print_byte::@1/(byte*) char_cursor#12 ) - (byte*) char_cursor#9 ← (byte*) char_cursor#30 + (byte*) char_cursor#42 ← phi( print_byte::@1/(byte*) char_cursor#12 ) + (byte*) char_cursor#9 ← (byte*) char_cursor#42 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) char_cursor#31 ← phi( print_byte::@2/(byte*) char_cursor#9 ) - (byte*) char_cursor#10 ← (byte*) char_cursor#31 + (byte*) char_cursor#43 ← phi( print_byte::@2/(byte*) char_cursor#9 ) + (byte*) char_cursor#10 ← (byte*) char_cursor#43 return to:@return print_char: scope:[print_char] from print_byte print_byte::@1 - (byte*) char_cursor#32 ← phi( print_byte/(byte*) char_cursor#45 print_byte::@1/(byte*) char_cursor#8 ) + (byte*) char_cursor#44 ← phi( print_byte/(byte*) char_cursor#69 print_byte::@1/(byte*) char_cursor#8 ) (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) - *((byte*) char_cursor#32) ← (byte) print_char::ch#2 - (byte*) char_cursor#11 ← ++ (byte*) char_cursor#32 + *((byte*) char_cursor#44) ← (byte) print_char::ch#2 + (byte*) char_cursor#11 ← ++ (byte*) char_cursor#44 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) char_cursor#33 ← phi( print_char/(byte*) char_cursor#11 ) - (byte*) char_cursor#12 ← (byte*) char_cursor#33 + (byte*) char_cursor#45 ← phi( print_char/(byte*) char_cursor#11 ) + (byte*) char_cursor#12 ← (byte*) char_cursor#45 return to:@return -print_cls: scope:[print_cls] from main::@3 +print_cls: scope:[print_cls] from main::@4 (byte*) print_cls::sc#0 ← (byte*) SCREEN#0 to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 @@ -1636,103 +1722,218 @@ print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) char_cursor#13 ← (byte*) line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) char_cursor#34 ← phi( print_cls::@2/(byte*) char_cursor#13 ) - (byte*) line_cursor#12 ← phi( print_cls::@2/(byte*) line_cursor#3 ) - (byte*) line_cursor#4 ← (byte*) line_cursor#12 - (byte*) char_cursor#14 ← (byte*) char_cursor#34 + (byte*) char_cursor#46 ← phi( print_cls::@2/(byte*) char_cursor#13 ) + (byte*) line_cursor#14 ← phi( print_cls::@2/(byte*) line_cursor#3 ) + (byte*) line_cursor#4 ← (byte*) line_cursor#14 + (byte*) char_cursor#14 ← (byte*) char_cursor#46 return to:@return main: scope:[main] from @18 - (byte*) char_cursor#50 ← phi( @18/(byte*) char_cursor#48 ) - (byte*) line_cursor#21 ← phi( @18/(byte*) line_cursor#20 ) - (word) rem16u#16 ← phi( @18/(word) rem16u#20 ) - (word[20]) main::lintab#0 ← { fill( 20, 0) } + (byte*) char_cursor#76 ← phi( @18/(byte*) char_cursor#73 ) + (byte*) line_cursor#31 ← phi( @18/(byte*) line_cursor#26 ) + (word) rem16u#18 ← phi( @18/(word) rem16u#22 ) + (word[20]) main::lintab1#0 ← { fill( 20, 0) } (word) lin16u_gen::min#0 ← (word/signed word/dword/signed dword) 557 (word) lin16u_gen::max#0 ← (word/signed word/dword/signed dword) 29793 - (word*) lin16u_gen::lintab#0 ← (word[20]) main::lintab#0 + (word*) lin16u_gen::lintab#0 ← (word[20]) main::lintab1#0 (word) lin16u_gen::length#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20 call lin16u_gen param-assignment to:main::@3 main::@3: scope:[main] from main - (byte*) char_cursor#46 ← phi( main/(byte*) char_cursor#50 ) - (byte*) line_cursor#18 ← phi( main/(byte*) line_cursor#21 ) - (word) rem16u#10 ← phi( main/(word) rem16u#7 ) - (word) rem16u#3 ← (word) rem16u#10 - call print_cls param-assignment + (byte*) char_cursor#75 ← phi( main/(byte*) char_cursor#76 ) + (byte*) line_cursor#27 ← phi( main/(byte*) line_cursor#31 ) + (word) rem16u#11 ← phi( main/(word) rem16u#8 ) + (word) rem16u#3 ← (word) rem16u#11 + (word[20]) main::lintab2#0 ← { fill( 20, 0) } + (word) lin16u_gen::min#1 ← (word/signed word/dword/signed dword) 31179 + (word) lin16u_gen::max#1 ← (word/dword/signed dword) 63361 + (word*) lin16u_gen::lintab#1 ← (word[20]) main::lintab2#0 + (word) lin16u_gen::length#1 ← (byte/signed byte/word/signed word/dword/signed dword) 20 + call lin16u_gen param-assignment to:main::@4 main::@4: scope:[main] from main::@3 - (word) rem16u#26 ← phi( main::@3/(word) rem16u#3 ) - (byte*) char_cursor#35 ← phi( main::@3/(byte*) char_cursor#14 ) - (byte*) line_cursor#13 ← phi( main::@3/(byte*) line_cursor#4 ) - (byte*) line_cursor#5 ← (byte*) line_cursor#13 - (byte*) char_cursor#15 ← (byte*) char_cursor#35 - (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:main::@1 -main::@1: scope:[main] from main::@4 main::@8 - (word) rem16u#25 ← phi( main::@4/(word) rem16u#26 main::@8/(word) rem16u#17 ) - (byte*) line_cursor#24 ← phi( main::@4/(byte*) line_cursor#5 main::@8/(byte*) line_cursor#6 ) - (byte*) char_cursor#47 ← phi( main::@4/(byte*) char_cursor#15 main::@8/(byte*) char_cursor#19 ) - (byte) main::i#2 ← phi( main::@4/(byte) main::i#0 main::@8/(byte) main::i#1 ) - (byte) print_byte::b#2 ← (byte) main::i#2 - call print_byte param-assignment + (byte*) char_cursor#70 ← phi( main::@3/(byte*) char_cursor#75 ) + (byte*) line_cursor#22 ← phi( main::@3/(byte*) line_cursor#27 ) + (word) rem16u#12 ← phi( main::@3/(word) rem16u#8 ) + (word) rem16u#4 ← (word) rem16u#12 + call print_cls param-assignment to:main::@5 -main::@5: scope:[main] from main::@1 - (word) rem16u#24 ← phi( main::@1/(word) rem16u#25 ) - (byte*) line_cursor#23 ← phi( main::@1/(byte*) line_cursor#24 ) - (byte) main::i#5 ← phi( main::@1/(byte) main::i#2 ) - (byte*) char_cursor#36 ← phi( main::@1/(byte*) char_cursor#10 ) - (byte*) char_cursor#16 ← (byte*) char_cursor#36 +main::@5: scope:[main] from main::@4 + (word) rem16u#41 ← phi( main::@4/(word) rem16u#4 ) + (byte*) char_cursor#47 ← phi( main::@4/(byte*) char_cursor#14 ) + (byte*) line_cursor#15 ← phi( main::@4/(byte*) line_cursor#4 ) + (byte*) line_cursor#5 ← (byte*) line_cursor#15 + (byte*) char_cursor#15 ← (byte*) char_cursor#47 (byte*) print_str::str#1 ← (const string) main::str call print_str param-assignment to:main::@6 main::@6: scope:[main] from main::@5 - (word) rem16u#23 ← phi( main::@5/(word) rem16u#24 ) - (byte*) line_cursor#22 ← phi( main::@5/(byte*) line_cursor#23 ) - (byte) main::i#3 ← phi( main::@5/(byte) main::i#5 ) - (byte*) char_cursor#37 ← phi( main::@5/(byte*) char_cursor#2 ) - (byte*) char_cursor#17 ← (byte*) char_cursor#37 - (word) print_word::w#0 ← *((word[20]) main::lintab#0 + (byte) main::i#3) + (word) rem16u#40 ← phi( main::@5/(word) rem16u#41 ) + (byte*) line_cursor#35 ← phi( main::@5/(byte*) line_cursor#5 ) + (byte*) char_cursor#48 ← phi( main::@5/(byte*) char_cursor#2 ) + (byte*) char_cursor#16 ← (byte*) char_cursor#48 + (word) print_word::w#0 ← (word/signed word/dword/signed dword) 557 call print_word param-assignment to:main::@7 main::@7: scope:[main] from main::@6 - (word) rem16u#21 ← phi( main::@6/(word) rem16u#23 ) - (byte) main::i#6 ← phi( main::@6/(byte) main::i#3 ) - (byte*) line_cursor#19 ← phi( main::@6/(byte*) line_cursor#22 ) - (byte*) char_cursor#38 ← phi( main::@6/(byte*) char_cursor#7 ) - (byte*) char_cursor#18 ← (byte*) char_cursor#38 - call print_ln param-assignment + (word) rem16u#39 ← phi( main::@6/(word) rem16u#40 ) + (byte*) line_cursor#32 ← phi( main::@6/(byte*) line_cursor#35 ) + (byte*) char_cursor#49 ← phi( main::@6/(byte*) char_cursor#7 ) + (byte*) char_cursor#17 ← (byte*) char_cursor#49 + (byte*) print_str::str#2 ← (const string) main::str1 + call print_str param-assignment to:main::@8 main::@8: scope:[main] from main::@7 - (word) rem16u#17 ← phi( main::@7/(word) rem16u#21 ) - (byte) main::i#4 ← phi( main::@7/(byte) main::i#6 ) - (byte*) char_cursor#39 ← phi( main::@7/(byte*) char_cursor#4 ) - (byte*) line_cursor#14 ← phi( main::@7/(byte*) line_cursor#2 ) - (byte*) line_cursor#6 ← (byte*) line_cursor#14 - (byte*) char_cursor#19 ← (byte*) char_cursor#39 - (byte/word~) main::$6 ← (byte) main::i#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) main::i#1 ← (byte/word~) main::$6 - (byte/signed byte/word/signed word/dword/signed dword~) main::$7 ← (byte/signed byte/word/signed word/dword/signed dword) 20 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (boolean~) main::$8 ← (byte) main::i#1 < (byte/signed byte/word/signed word/dword/signed dword~) main::$7 - if((boolean~) main::$8) goto main::@1 + (word) rem16u#38 ← phi( main::@7/(word) rem16u#39 ) + (byte*) line_cursor#28 ← phi( main::@7/(byte*) line_cursor#32 ) + (byte*) char_cursor#50 ← phi( main::@7/(byte*) char_cursor#2 ) + (byte*) char_cursor#18 ← (byte*) char_cursor#50 + (word) print_word::w#1 ← (word/signed word/dword/signed dword) 31179 + call print_word param-assignment + to:main::@9 +main::@9: scope:[main] from main::@8 + (word) rem16u#37 ← phi( main::@8/(word) rem16u#38 ) + (byte*) line_cursor#23 ← phi( main::@8/(byte*) line_cursor#28 ) + (byte*) char_cursor#51 ← phi( main::@8/(byte*) char_cursor#7 ) + (byte*) char_cursor#19 ← (byte*) char_cursor#51 + call print_ln param-assignment + to:main::@10 +main::@10: scope:[main] from main::@9 + (word) rem16u#36 ← phi( main::@9/(word) rem16u#37 ) + (byte*) char_cursor#52 ← phi( main::@9/(byte*) char_cursor#4 ) + (byte*) line_cursor#16 ← phi( main::@9/(byte*) line_cursor#2 ) + (byte*) line_cursor#6 ← (byte*) line_cursor#16 + (byte*) char_cursor#20 ← (byte*) char_cursor#52 + (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main::@10 main::@16 + (word) rem16u#35 ← phi( main::@10/(word) rem16u#36 main::@16/(word) rem16u#29 ) + (byte*) line_cursor#40 ← phi( main::@10/(byte*) line_cursor#6 main::@16/(byte*) line_cursor#7 ) + (byte*) char_cursor#71 ← phi( main::@10/(byte*) char_cursor#20 main::@16/(byte*) char_cursor#26 ) + (byte) main::i#2 ← phi( main::@10/(byte) main::i#0 main::@16/(byte) main::i#1 ) + (byte) print_byte::b#2 ← (byte) main::i#2 + call print_byte param-assignment + to:main::@11 +main::@11: scope:[main] from main::@1 + (word) rem16u#34 ← phi( main::@1/(word) rem16u#35 ) + (byte*) line_cursor#38 ← phi( main::@1/(byte*) line_cursor#40 ) + (byte) main::i#6 ← phi( main::@1/(byte) main::i#2 ) + (byte*) char_cursor#53 ← phi( main::@1/(byte*) char_cursor#10 ) + (byte*) char_cursor#21 ← (byte*) char_cursor#53 + (byte*) print_str::str#3 ← (const string) main::str2 + call print_str param-assignment + to:main::@12 +main::@12: scope:[main] from main::@11 + (word) rem16u#33 ← phi( main::@11/(word) rem16u#34 ) + (byte*) line_cursor#36 ← phi( main::@11/(byte*) line_cursor#38 ) + (byte) main::i#3 ← phi( main::@11/(byte) main::i#6 ) + (byte*) char_cursor#54 ← phi( main::@11/(byte*) char_cursor#2 ) + (byte*) char_cursor#22 ← (byte*) char_cursor#54 + (word) print_word::w#2 ← *((word[20]) main::lintab1#0 + (byte) main::i#3) + call print_word param-assignment + to:main::@13 +main::@13: scope:[main] from main::@12 + (word) rem16u#32 ← phi( main::@12/(word) rem16u#33 ) + (byte*) line_cursor#33 ← phi( main::@12/(byte*) line_cursor#36 ) + (byte) main::i#7 ← phi( main::@12/(byte) main::i#3 ) + (byte*) char_cursor#55 ← phi( main::@12/(byte*) char_cursor#7 ) + (byte*) char_cursor#23 ← (byte*) char_cursor#55 + (byte*) print_str::str#4 ← (const string) main::str3 + call print_str param-assignment + to:main::@14 +main::@14: scope:[main] from main::@13 + (word) rem16u#31 ← phi( main::@13/(word) rem16u#32 ) + (byte*) line_cursor#29 ← phi( main::@13/(byte*) line_cursor#33 ) + (byte) main::i#4 ← phi( main::@13/(byte) main::i#7 ) + (byte*) char_cursor#56 ← phi( main::@13/(byte*) char_cursor#2 ) + (byte*) char_cursor#24 ← (byte*) char_cursor#56 + (word) print_word::w#3 ← *((word[20]) main::lintab2#0 + (byte) main::i#4) + call print_word param-assignment + to:main::@15 +main::@15: scope:[main] from main::@14 + (word) rem16u#30 ← phi( main::@14/(word) rem16u#31 ) + (byte) main::i#8 ← phi( main::@14/(byte) main::i#4 ) + (byte*) line_cursor#24 ← phi( main::@14/(byte*) line_cursor#29 ) + (byte*) char_cursor#57 ← phi( main::@14/(byte*) char_cursor#7 ) + (byte*) char_cursor#25 ← (byte*) char_cursor#57 + call print_ln param-assignment + to:main::@16 +main::@16: scope:[main] from main::@15 + (word) rem16u#29 ← phi( main::@15/(word) rem16u#30 ) + (byte) main::i#5 ← phi( main::@15/(byte) main::i#8 ) + (byte*) char_cursor#58 ← phi( main::@15/(byte*) char_cursor#4 ) + (byte*) line_cursor#17 ← phi( main::@15/(byte*) line_cursor#2 ) + (byte*) line_cursor#7 ← (byte*) line_cursor#17 + (byte*) char_cursor#26 ← (byte*) char_cursor#58 + (byte/word~) main::$14 ← (byte) main::i#5 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#1 ← (byte/word~) main::$14 + (byte/signed byte/word/signed word/dword/signed dword~) main::$15 ← (byte/signed byte/word/signed word/dword/signed dword) 20 * (byte/signed byte/word/signed word/dword/signed dword) 2 + (boolean~) main::$16 ← (byte) main::i#1 < (byte/signed byte/word/signed word/dword/signed dword~) main::$15 + if((boolean~) main::$16) goto main::@1 + to:main::@2 +main::@2: scope:[main] from main::@16 + (word) rem16u#28 ← phi( main::@16/(word) rem16u#29 ) + (byte*) line_cursor#39 ← phi( main::@16/(byte*) line_cursor#7 ) + (byte*) char_cursor#72 ← phi( main::@16/(byte*) char_cursor#26 ) + (byte*) print_str::str#5 ← (const string) main::str4 + call print_str param-assignment + to:main::@17 +main::@17: scope:[main] from main::@2 + (word) rem16u#27 ← phi( main::@2/(word) rem16u#28 ) + (byte*) line_cursor#37 ← phi( main::@2/(byte*) line_cursor#39 ) + (byte*) char_cursor#59 ← phi( main::@2/(byte*) char_cursor#2 ) + (byte*) char_cursor#27 ← (byte*) char_cursor#59 + (word) print_word::w#4 ← (word/signed word/dword/signed dword) 29793 + call print_word param-assignment + to:main::@18 +main::@18: scope:[main] from main::@17 + (word) rem16u#26 ← phi( main::@17/(word) rem16u#27 ) + (byte*) line_cursor#34 ← phi( main::@17/(byte*) line_cursor#37 ) + (byte*) char_cursor#60 ← phi( main::@17/(byte*) char_cursor#7 ) + (byte*) char_cursor#28 ← (byte*) char_cursor#60 + (byte*) print_str::str#6 ← (const string) main::str5 + call print_str param-assignment + to:main::@19 +main::@19: scope:[main] from main::@18 + (word) rem16u#25 ← phi( main::@18/(word) rem16u#26 ) + (byte*) line_cursor#30 ← phi( main::@18/(byte*) line_cursor#34 ) + (byte*) char_cursor#61 ← phi( main::@18/(byte*) char_cursor#2 ) + (byte*) char_cursor#29 ← (byte*) char_cursor#61 + (word) print_word::w#5 ← (word/dword/signed dword) 63361 + call print_word param-assignment + to:main::@20 +main::@20: scope:[main] from main::@19 + (word) rem16u#23 ← phi( main::@19/(word) rem16u#25 ) + (byte*) line_cursor#25 ← phi( main::@19/(byte*) line_cursor#30 ) + (byte*) char_cursor#62 ← phi( main::@19/(byte*) char_cursor#7 ) + (byte*) char_cursor#30 ← (byte*) char_cursor#62 + call print_ln param-assignment + to:main::@21 +main::@21: scope:[main] from main::@20 + (word) rem16u#19 ← phi( main::@20/(word) rem16u#23 ) + (byte*) char_cursor#63 ← phi( main::@20/(byte*) char_cursor#4 ) + (byte*) line_cursor#18 ← phi( main::@20/(byte*) line_cursor#2 ) + (byte*) line_cursor#8 ← (byte*) line_cursor#18 + (byte*) char_cursor#31 ← (byte*) char_cursor#63 to:main::@return -main::@return: scope:[main] from main::@8 - (byte*) char_cursor#40 ← phi( main::@8/(byte*) char_cursor#19 ) - (byte*) line_cursor#15 ← phi( main::@8/(byte*) line_cursor#6 ) - (word) rem16u#11 ← phi( main::@8/(word) rem16u#17 ) - (word) rem16u#4 ← (word) rem16u#11 - (byte*) line_cursor#7 ← (byte*) line_cursor#15 - (byte*) char_cursor#20 ← (byte*) char_cursor#40 +main::@return: scope:[main] from main::@21 + (byte*) char_cursor#64 ← phi( main::@21/(byte*) char_cursor#31 ) + (byte*) line_cursor#19 ← phi( main::@21/(byte*) line_cursor#8 ) + (word) rem16u#13 ← phi( main::@21/(word) rem16u#19 ) + (word) rem16u#5 ← (word) rem16u#13 + (byte*) line_cursor#9 ← (byte*) line_cursor#19 + (byte*) char_cursor#32 ← (byte*) char_cursor#64 return to:@return -lin16u_gen: scope:[lin16u_gen] from main - (word*) lin16u_gen::lintab#5 ← phi( main/(word*) lin16u_gen::lintab#0 ) - (word) rem16u#18 ← phi( main/(word) rem16u#16 ) - (word) lin16u_gen::length#1 ← phi( main/(word) lin16u_gen::length#0 ) - (word) lin16u_gen::min#1 ← phi( main/(word) lin16u_gen::min#0 ) - (word) lin16u_gen::max#1 ← phi( main/(word) lin16u_gen::max#0 ) - (word~) lin16u_gen::$0 ← (word) lin16u_gen::max#1 - (word) lin16u_gen::min#1 +lin16u_gen: scope:[lin16u_gen] from main main::@3 + (word*) lin16u_gen::lintab#6 ← phi( main/(word*) lin16u_gen::lintab#0 main::@3/(word*) lin16u_gen::lintab#1 ) + (word) rem16u#20 ← phi( main/(word) rem16u#18 main::@3/(word) rem16u#3 ) + (word) lin16u_gen::length#2 ← phi( main/(word) lin16u_gen::length#0 main::@3/(word) lin16u_gen::length#1 ) + (word) lin16u_gen::min#2 ← phi( main/(word) lin16u_gen::min#0 main::@3/(word) lin16u_gen::min#1 ) + (word) lin16u_gen::max#2 ← phi( main/(word) lin16u_gen::max#0 main::@3/(word) lin16u_gen::max#1 ) + (word~) lin16u_gen::$0 ← (word) lin16u_gen::max#2 - (word) lin16u_gen::min#2 (word) lin16u_gen::ampl#0 ← (word~) lin16u_gen::$0 - (word~) lin16u_gen::$1 ← (word) lin16u_gen::length#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) lin16u_gen::$1 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 (word) divr16u::divisor#0 ← (word~) lin16u_gen::$1 (word) divr16u::rem#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1740,70 +1941,70 @@ lin16u_gen: scope:[lin16u_gen] from main (word) divr16u::return#2 ← (word) divr16u::return#1 to:lin16u_gen::@3 lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen - (word*) lin16u_gen::lintab#4 ← phi( lin16u_gen/(word*) lin16u_gen::lintab#5 ) - (word) lin16u_gen::min#3 ← phi( lin16u_gen/(word) lin16u_gen::min#1 ) - (word) lin16u_gen::length#2 ← phi( lin16u_gen/(word) lin16u_gen::length#1 ) - (word) rem16u#12 ← phi( lin16u_gen/(word) rem16u#2 ) + (word*) lin16u_gen::lintab#5 ← phi( lin16u_gen/(word*) lin16u_gen::lintab#6 ) + (word) lin16u_gen::min#4 ← phi( lin16u_gen/(word) lin16u_gen::min#2 ) + (word) lin16u_gen::length#3 ← phi( lin16u_gen/(word) lin16u_gen::length#2 ) + (word) rem16u#14 ← phi( lin16u_gen/(word) rem16u#2 ) (word) divr16u::return#5 ← phi( lin16u_gen/(word) divr16u::return#2 ) (word~) lin16u_gen::$2 ← (word) divr16u::return#5 - (word) rem16u#5 ← (word) rem16u#12 + (word) rem16u#6 ← (word) rem16u#14 (word) lin16u_gen::stepi#0 ← (word~) lin16u_gen::$2 - (word~) lin16u_gen::$3 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) lin16u_gen::$3 ← (word) lin16u_gen::length#3 - (byte/signed byte/word/signed word/dword/signed dword) 1 (word) divr16u::dividend#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (word) divr16u::divisor#1 ← (word~) lin16u_gen::$3 - (word) divr16u::rem#4 ← (word) rem16u#5 + (word) divr16u::rem#4 ← (word) rem16u#6 call divr16u param-assignment (word) divr16u::return#3 ← (word) divr16u::return#1 to:lin16u_gen::@4 lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3 - (word) lin16u_gen::length#4 ← phi( lin16u_gen::@3/(word) lin16u_gen::length#2 ) - (word*) lin16u_gen::lintab#3 ← phi( lin16u_gen::@3/(word*) lin16u_gen::lintab#4 ) - (word) lin16u_gen::min#2 ← phi( lin16u_gen::@3/(word) lin16u_gen::min#3 ) + (word) lin16u_gen::length#5 ← phi( lin16u_gen::@3/(word) lin16u_gen::length#3 ) + (word*) lin16u_gen::lintab#4 ← phi( lin16u_gen::@3/(word*) lin16u_gen::lintab#5 ) + (word) lin16u_gen::min#3 ← phi( lin16u_gen::@3/(word) lin16u_gen::min#4 ) (word) lin16u_gen::stepi#1 ← phi( lin16u_gen::@3/(word) lin16u_gen::stepi#0 ) - (word) rem16u#13 ← phi( lin16u_gen::@3/(word) rem16u#2 ) + (word) rem16u#15 ← phi( lin16u_gen::@3/(word) rem16u#2 ) (word) divr16u::return#6 ← phi( lin16u_gen::@3/(word) divr16u::return#3 ) (word~) lin16u_gen::$4 ← (word) divr16u::return#6 - (word) rem16u#6 ← (word) rem16u#13 + (word) rem16u#7 ← (word) rem16u#15 (word) lin16u_gen::stepf#0 ← (word~) lin16u_gen::$4 (dword) lin16u_gen::step#0 ← { (word) lin16u_gen::stepi#1, (word) lin16u_gen::stepf#0 } - (dword) lin16u_gen::val#0 ← { (word) lin16u_gen::min#2, (byte/signed byte/word/signed word/dword/signed dword) 0 } + (dword) lin16u_gen::val#0 ← { (word) lin16u_gen::min#3, (byte/signed byte/word/signed word/dword/signed dword) 0 } (word) lin16u_gen::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:lin16u_gen::@1 lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@1 lin16u_gen::@4 - (word) rem16u#19 ← phi( lin16u_gen::@1/(word) rem16u#19 lin16u_gen::@4/(word) rem16u#6 ) - (word) lin16u_gen::length#3 ← phi( lin16u_gen::@1/(word) lin16u_gen::length#3 lin16u_gen::@4/(word) lin16u_gen::length#4 ) + (word) rem16u#21 ← phi( lin16u_gen::@1/(word) rem16u#21 lin16u_gen::@4/(word) rem16u#7 ) + (word) lin16u_gen::length#4 ← phi( lin16u_gen::@1/(word) lin16u_gen::length#4 lin16u_gen::@4/(word) lin16u_gen::length#5 ) (word) lin16u_gen::i#2 ← phi( lin16u_gen::@1/(word) lin16u_gen::i#1 lin16u_gen::@4/(word) lin16u_gen::i#0 ) (dword) lin16u_gen::step#1 ← phi( lin16u_gen::@1/(dword) lin16u_gen::step#1 lin16u_gen::@4/(dword) lin16u_gen::step#0 ) - (word*) lin16u_gen::lintab#2 ← phi( lin16u_gen::@1/(word*) lin16u_gen::lintab#1 lin16u_gen::@4/(word*) lin16u_gen::lintab#3 ) + (word*) lin16u_gen::lintab#3 ← phi( lin16u_gen::@1/(word*) lin16u_gen::lintab#2 lin16u_gen::@4/(word*) lin16u_gen::lintab#4 ) (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@1/(dword) lin16u_gen::val#1 lin16u_gen::@4/(dword) lin16u_gen::val#0 ) (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 - *((word*) lin16u_gen::lintab#2) ← (word~) lin16u_gen::$5 + *((word*) lin16u_gen::lintab#3) ← (word~) lin16u_gen::$5 (dword~) lin16u_gen::$6 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#1 (dword) lin16u_gen::val#1 ← (dword~) lin16u_gen::$6 - (word*~) lin16u_gen::$7 ← (word*) lin16u_gen::lintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (word*) lin16u_gen::lintab#1 ← (word*~) lin16u_gen::$7 + (word*~) lin16u_gen::$7 ← (word*) lin16u_gen::lintab#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (word*) lin16u_gen::lintab#2 ← (word*~) lin16u_gen::$7 (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 - (boolean~) lin16u_gen::$8 ← (word) lin16u_gen::i#1 < (word) lin16u_gen::length#3 + (boolean~) lin16u_gen::$8 ← (word) lin16u_gen::i#1 < (word) lin16u_gen::length#4 if((boolean~) lin16u_gen::$8) goto lin16u_gen::@1 to:lin16u_gen::@return lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1 - (word) rem16u#14 ← phi( lin16u_gen::@1/(word) rem16u#19 ) - (word) rem16u#7 ← (word) rem16u#14 + (word) rem16u#16 ← phi( lin16u_gen::@1/(word) rem16u#21 ) + (word) rem16u#8 ← (word) rem16u#16 return to:@return @18: scope:[] from @6 - (byte*) char_cursor#48 ← phi( @6/(byte*) char_cursor#0 ) - (byte*) line_cursor#20 ← phi( @6/(byte*) line_cursor#0 ) - (word) rem16u#20 ← phi( @6/(word) rem16u#22 ) + (byte*) char_cursor#73 ← phi( @6/(byte*) char_cursor#0 ) + (byte*) line_cursor#26 ← phi( @6/(byte*) line_cursor#0 ) + (word) rem16u#22 ← phi( @6/(word) rem16u#24 ) call main param-assignment to:@19 @19: scope:[] from @18 - (byte*) char_cursor#41 ← phi( @18/(byte*) char_cursor#20 ) - (byte*) line_cursor#16 ← phi( @18/(byte*) line_cursor#7 ) - (word) rem16u#15 ← phi( @18/(word) rem16u#4 ) - (word) rem16u#8 ← (word) rem16u#15 - (byte*) line_cursor#8 ← (byte*) line_cursor#16 - (byte*) char_cursor#21 ← (byte*) char_cursor#41 + (byte*) char_cursor#65 ← phi( @18/(byte*) char_cursor#32 ) + (byte*) line_cursor#20 ← phi( @18/(byte*) line_cursor#9 ) + (word) rem16u#17 ← phi( @18/(word) rem16u#5 ) + (word) rem16u#9 ← (word) rem16u#17 + (byte*) line_cursor#10 ← (byte*) line_cursor#20 + (byte*) char_cursor#33 ← (byte*) char_cursor#65 to:@end @end: scope:[] from @19 @@ -1864,8 +2065,34 @@ SYMBOL TABLE SSA (byte*) char_cursor#49 (byte*) char_cursor#5 (byte*) char_cursor#50 +(byte*) char_cursor#51 +(byte*) char_cursor#52 +(byte*) char_cursor#53 +(byte*) char_cursor#54 +(byte*) char_cursor#55 +(byte*) char_cursor#56 +(byte*) char_cursor#57 +(byte*) char_cursor#58 +(byte*) char_cursor#59 (byte*) char_cursor#6 +(byte*) char_cursor#60 +(byte*) char_cursor#61 +(byte*) char_cursor#62 +(byte*) char_cursor#63 +(byte*) char_cursor#64 +(byte*) char_cursor#65 +(byte*) char_cursor#66 +(byte*) char_cursor#67 +(byte*) char_cursor#68 +(byte*) char_cursor#69 (byte*) char_cursor#7 +(byte*) char_cursor#70 +(byte*) char_cursor#71 +(byte*) char_cursor#72 +(byte*) char_cursor#73 +(byte*) char_cursor#74 +(byte*) char_cursor#75 +(byte*) char_cursor#76 (byte*) char_cursor#8 (byte*) char_cursor#9 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) @@ -1972,6 +2199,7 @@ SYMBOL TABLE SSA (word) lin16u_gen::length#2 (word) lin16u_gen::length#3 (word) lin16u_gen::length#4 +(word) lin16u_gen::length#5 (word*) lin16u_gen::lintab (word*) lin16u_gen::lintab#0 (word*) lin16u_gen::lintab#1 @@ -1979,14 +2207,17 @@ SYMBOL TABLE SSA (word*) lin16u_gen::lintab#3 (word*) lin16u_gen::lintab#4 (word*) lin16u_gen::lintab#5 +(word*) lin16u_gen::lintab#6 (word) lin16u_gen::max (word) lin16u_gen::max#0 (word) lin16u_gen::max#1 +(word) lin16u_gen::max#2 (word) lin16u_gen::min (word) lin16u_gen::min#0 (word) lin16u_gen::min#1 (word) lin16u_gen::min#2 (word) lin16u_gen::min#3 +(word) lin16u_gen::min#4 (dword) lin16u_gen::step (dword) lin16u_gen::step#0 (dword) lin16u_gen::step#1 @@ -2018,24 +2249,54 @@ SYMBOL TABLE SSA (byte*) line_cursor#22 (byte*) line_cursor#23 (byte*) line_cursor#24 +(byte*) line_cursor#25 +(byte*) line_cursor#26 +(byte*) line_cursor#27 +(byte*) line_cursor#28 +(byte*) line_cursor#29 (byte*) line_cursor#3 +(byte*) line_cursor#30 +(byte*) line_cursor#31 +(byte*) line_cursor#32 +(byte*) line_cursor#33 +(byte*) line_cursor#34 +(byte*) line_cursor#35 +(byte*) line_cursor#36 +(byte*) line_cursor#37 +(byte*) line_cursor#38 +(byte*) line_cursor#39 (byte*) line_cursor#4 +(byte*) line_cursor#40 (byte*) line_cursor#5 (byte*) line_cursor#6 (byte*) line_cursor#7 (byte*) line_cursor#8 (byte*) line_cursor#9 (void()) main() -(byte/word~) main::$6 -(byte/signed byte/word/signed word/dword/signed dword~) main::$7 -(boolean~) main::$8 +(byte/word~) main::$14 +(byte/signed byte/word/signed word/dword/signed dword~) main::$15 +(boolean~) main::$16 (label) main::@1 +(label) main::@10 +(label) main::@11 +(label) main::@12 +(label) main::@13 +(label) main::@14 +(label) main::@15 +(label) main::@16 +(label) main::@17 +(label) main::@18 +(label) main::@19 +(label) main::@2 +(label) main::@20 +(label) main::@21 (label) main::@3 (label) main::@4 (label) main::@5 (label) main::@6 (label) main::@7 (label) main::@8 +(label) main::@9 (label) main::@return (byte) main::i (byte) main::i#0 @@ -2045,9 +2306,18 @@ SYMBOL TABLE SSA (byte) main::i#4 (byte) main::i#5 (byte) main::i#6 -(word[20]) main::lintab -(word[20]) main::lintab#0 -(const string) main::str = (string) " @" +(byte) main::i#7 +(byte) main::i#8 +(word[20]) main::lintab1 +(word[20]) main::lintab1#0 +(word[20]) main::lintab2 +(word[20]) main::lintab2#0 +(const string) main::str = (string) " @" +(const string) main::str1 = (string) " @" +(const string) main::str2 = (string) " @" +(const string) main::str3 = (string) " @" +(const string) main::str4 = (string) " @" +(const string) main::str5 = (string) " @" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (byte~) print_byte::$2 @@ -2096,6 +2366,11 @@ SYMBOL TABLE SSA (byte*) print_str::str#2 (byte*) print_str::str#3 (byte*) print_str::str#4 +(byte*) print_str::str#5 +(byte*) print_str::str#6 +(byte*) print_str::str#7 +(byte*) print_str::str#8 +(byte*) print_str::str#9 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -2106,6 +2381,11 @@ SYMBOL TABLE SSA (word) print_word::w#0 (word) print_word::w#1 (word) print_word::w#2 +(word) print_word::w#3 +(word) print_word::w#4 +(word) print_word::w#5 +(word) print_word::w#6 +(word) print_word::w#7 (word) rem16u (word) rem16u#0 (word) rem16u#1 @@ -2127,8 +2407,23 @@ SYMBOL TABLE SSA (word) rem16u#24 (word) rem16u#25 (word) rem16u#26 +(word) rem16u#27 +(word) rem16u#28 +(word) rem16u#29 (word) rem16u#3 +(word) rem16u#30 +(word) rem16u#31 +(word) rem16u#32 +(word) rem16u#33 +(word) rem16u#34 +(word) rem16u#35 +(word) rem16u#36 +(word) rem16u#37 +(word) rem16u#38 +(word) rem16u#39 (word) rem16u#4 +(word) rem16u#40 +(word) rem16u#41 (word) rem16u#5 (word) rem16u#6 (word) rem16u#7 @@ -2143,54 +2438,70 @@ Not aliassing across scopes: divr16u::rem#10 divr16u::rem#3 Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#9 -Not aliassing across scopes: print_str::str#4 print_str::str#1 -Not aliassing across scopes: char_cursor#49 char_cursor#16 -Not aliassing across scopes: line_cursor#17 line_cursor#19 -Not aliassing across scopes: char_cursor#43 char_cursor#18 -Not aliassing across scopes: print_word::w#1 print_word::w#0 -Not aliassing across scopes: char_cursor#44 char_cursor#17 -Not aliassing across scopes: char_cursor#26 char_cursor#10 -Not aliassing across scopes: char_cursor#27 char_cursor#10 +Not aliassing across scopes: print_str::str#9 print_str::str#3 +Not aliassing across scopes: char_cursor#74 char_cursor#21 +Not aliassing across scopes: line_cursor#21 line_cursor#24 +Not aliassing across scopes: char_cursor#67 char_cursor#25 +Not aliassing across scopes: print_word::w#6 print_word::w#2 +Not aliassing across scopes: char_cursor#68 char_cursor#22 +Not aliassing across scopes: char_cursor#38 char_cursor#10 +Not aliassing across scopes: char_cursor#39 char_cursor#10 Not aliassing across scopes: print_byte::b#3 print_byte::b#2 -Not aliassing across scopes: char_cursor#45 char_cursor#47 -Not aliassing across scopes: char_cursor#29 char_cursor#12 -Not aliassing across scopes: char_cursor#30 char_cursor#12 +Not aliassing across scopes: char_cursor#69 char_cursor#71 +Not aliassing across scopes: char_cursor#41 char_cursor#12 +Not aliassing across scopes: char_cursor#42 char_cursor#12 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#32 char_cursor#45 +Not aliassing across scopes: char_cursor#44 char_cursor#69 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 Not aliassing across scopes: line_cursor#3 SCREEN#0 -Not aliassing across scopes: rem16u#16 rem16u#20 -Not aliassing across scopes: line_cursor#21 line_cursor#20 -Not aliassing across scopes: char_cursor#50 char_cursor#48 -Not aliassing across scopes: lin16u_gen::lintab#0 main::lintab#0 -Not aliassing across scopes: rem16u#10 rem16u#7 -Not aliassing across scopes: line_cursor#13 line_cursor#4 -Not aliassing across scopes: char_cursor#35 char_cursor#14 +Not aliassing across scopes: rem16u#18 rem16u#22 +Not aliassing across scopes: line_cursor#31 line_cursor#26 +Not aliassing across scopes: char_cursor#76 char_cursor#73 +Not aliassing across scopes: lin16u_gen::lintab#0 main::lintab1#0 +Not aliassing across scopes: rem16u#11 rem16u#8 +Not aliassing across scopes: lin16u_gen::lintab#1 main::lintab2#0 +Not aliassing across scopes: rem16u#12 rem16u#8 +Not aliassing across scopes: line_cursor#15 line_cursor#4 +Not aliassing across scopes: char_cursor#47 char_cursor#14 +Not aliassing across scopes: char_cursor#48 char_cursor#2 +Not aliassing across scopes: char_cursor#49 char_cursor#7 +Not aliassing across scopes: char_cursor#50 char_cursor#2 +Not aliassing across scopes: char_cursor#51 char_cursor#7 +Not aliassing across scopes: line_cursor#16 line_cursor#2 +Not aliassing across scopes: char_cursor#52 char_cursor#4 Not aliassing across scopes: print_byte::b#2 main::i#2 -Not aliassing across scopes: char_cursor#36 char_cursor#10 -Not aliassing across scopes: char_cursor#37 char_cursor#2 -Not aliassing across scopes: char_cursor#38 char_cursor#7 -Not aliassing across scopes: line_cursor#14 line_cursor#2 -Not aliassing across scopes: char_cursor#39 char_cursor#4 -Not aliassing across scopes: lin16u_gen::max#1 lin16u_gen::max#0 -Not aliassing across scopes: lin16u_gen::min#1 lin16u_gen::min#0 -Not aliassing across scopes: lin16u_gen::length#1 lin16u_gen::length#0 -Not aliassing across scopes: rem16u#18 rem16u#16 -Not aliassing across scopes: lin16u_gen::lintab#5 lin16u_gen::lintab#0 +Not aliassing across scopes: char_cursor#53 char_cursor#10 +Not aliassing across scopes: char_cursor#54 char_cursor#2 +Not aliassing across scopes: char_cursor#55 char_cursor#7 +Not aliassing across scopes: char_cursor#56 char_cursor#2 +Not aliassing across scopes: char_cursor#57 char_cursor#7 +Not aliassing across scopes: line_cursor#17 line_cursor#2 +Not aliassing across scopes: char_cursor#58 char_cursor#4 +Not aliassing across scopes: char_cursor#59 char_cursor#2 +Not aliassing across scopes: char_cursor#60 char_cursor#7 +Not aliassing across scopes: char_cursor#61 char_cursor#2 +Not aliassing across scopes: char_cursor#62 char_cursor#7 +Not aliassing across scopes: line_cursor#18 line_cursor#2 +Not aliassing across scopes: char_cursor#63 char_cursor#4 +Not aliassing across scopes: lin16u_gen::max#2 lin16u_gen::max#0 +Not aliassing across scopes: lin16u_gen::min#2 lin16u_gen::min#0 +Not aliassing across scopes: lin16u_gen::length#2 lin16u_gen::length#0 +Not aliassing across scopes: rem16u#20 rem16u#18 +Not aliassing across scopes: lin16u_gen::lintab#6 lin16u_gen::lintab#0 Not aliassing across scopes: divr16u::dividend#1 lin16u_gen::ampl#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#1 -Not aliassing across scopes: rem16u#12 rem16u#2 +Not aliassing across scopes: rem16u#14 rem16u#2 Not aliassing across scopes: lin16u_gen::$2 divr16u::return#5 -Not aliassing across scopes: divr16u::rem#4 rem16u#5 +Not aliassing across scopes: divr16u::rem#4 rem16u#6 Not aliassing across scopes: divr16u::return#3 divr16u::return#1 -Not aliassing across scopes: rem16u#13 rem16u#2 +Not aliassing across scopes: rem16u#15 rem16u#2 Not aliassing across scopes: lin16u_gen::$4 divr16u::return#6 Not aliassing identity: lin16u_gen::step#1 lin16u_gen::step#1 -Not aliassing identity: lin16u_gen::length#3 lin16u_gen::length#3 -Not aliassing identity: rem16u#19 rem16u#19 -Not aliassing across scopes: rem16u#15 rem16u#4 -Not aliassing across scopes: line_cursor#16 line_cursor#7 -Not aliassing across scopes: char_cursor#41 char_cursor#20 +Not aliassing identity: lin16u_gen::length#4 lin16u_gen::length#4 +Not aliassing identity: rem16u#21 rem16u#21 +Not aliassing across scopes: rem16u#17 rem16u#5 +Not aliassing across scopes: line_cursor#20 line_cursor#9 +Not aliassing across scopes: char_cursor#65 char_cursor#32 Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 @@ -2205,107 +2516,138 @@ Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 Alias (word) divr16u::rem#2 = (word~) divr16u::$10 Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 -Alias (word) rem16u#1 = (word) rem16u#9 (word) rem16u#2 -Alias (word) rem16u#0 = (word) rem16u#22 (word) rem16u#20 -Alias (byte*) SCREEN#0 = (byte*) line_cursor#0 (byte*) char_cursor#0 (byte*) line_cursor#20 (byte*) char_cursor#48 -Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 -Alias (byte*) char_cursor#2 = (byte*) char_cursor#22 (byte*) char_cursor#42 (byte*) char_cursor#23 -Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#10 (byte*) char_cursor#3 (byte*) line_cursor#11 (byte*) char_cursor#25 (byte*) line_cursor#2 (byte*) char_cursor#4 +Alias (word) rem16u#1 = (word) rem16u#10 (word) rem16u#2 +Alias (word) rem16u#0 = (word) rem16u#24 (word) rem16u#22 +Alias (byte*) SCREEN#0 = (byte*) line_cursor#0 (byte*) char_cursor#0 (byte*) line_cursor#26 (byte*) char_cursor#73 +Alias (byte*) print_str::str#7 = (byte*) print_str::str#8 +Alias (byte*) char_cursor#2 = (byte*) char_cursor#34 (byte*) char_cursor#66 (byte*) char_cursor#35 +Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#12 (byte*) char_cursor#3 (byte*) line_cursor#13 (byte*) char_cursor#37 (byte*) line_cursor#2 (byte*) char_cursor#4 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#1 = (word) print_word::w#2 -Alias (byte*) char_cursor#26 = (byte*) char_cursor#5 +Alias (word) print_word::w#6 = (word) print_word::w#7 +Alias (byte*) char_cursor#38 = (byte*) char_cursor#5 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) char_cursor#27 = (byte*) char_cursor#6 (byte*) char_cursor#28 (byte*) char_cursor#7 +Alias (byte*) char_cursor#39 = (byte*) char_cursor#6 (byte*) char_cursor#40 (byte*) char_cursor#7 Alias (byte) print_byte::b#3 = (byte) print_byte::b#4 -Alias (byte*) char_cursor#29 = (byte*) char_cursor#8 -Alias (byte*) char_cursor#10 = (byte*) char_cursor#9 (byte*) char_cursor#30 (byte*) char_cursor#31 -Alias (byte*) char_cursor#11 = (byte*) char_cursor#33 (byte*) char_cursor#12 -Alias (byte*) line_cursor#12 = (byte*) char_cursor#13 (byte*) line_cursor#3 (byte*) char_cursor#34 (byte*) line_cursor#4 (byte*) char_cursor#14 -Alias (byte*) line_cursor#18 = (byte*) line_cursor#21 -Alias (byte*) char_cursor#46 = (byte*) char_cursor#50 -Alias (word) rem16u#10 = (word) rem16u#3 (word) rem16u#26 -Alias (byte*) line_cursor#13 = (byte*) line_cursor#5 -Alias (byte*) char_cursor#15 = (byte*) char_cursor#35 -Alias (byte) main::i#2 = (byte) main::i#5 (byte) main::i#3 (byte) main::i#6 (byte) main::i#4 -Alias (byte*) line_cursor#19 = (byte*) line_cursor#23 (byte*) line_cursor#24 (byte*) line_cursor#22 -Alias (word) rem16u#11 = (word) rem16u#24 (word) rem16u#25 (word) rem16u#23 (word) rem16u#21 (word) rem16u#17 (word) rem16u#4 -Alias (byte*) char_cursor#16 = (byte*) char_cursor#36 -Alias (byte*) char_cursor#17 = (byte*) char_cursor#37 -Alias (byte*) char_cursor#18 = (byte*) char_cursor#38 -Alias (byte*) line_cursor#14 = (byte*) line_cursor#6 (byte*) line_cursor#15 (byte*) line_cursor#7 -Alias (byte*) char_cursor#19 = (byte*) char_cursor#39 (byte*) char_cursor#40 (byte*) char_cursor#20 -Alias (byte) main::i#1 = (byte/word~) main::$6 +Alias (byte*) char_cursor#41 = (byte*) char_cursor#8 +Alias (byte*) char_cursor#10 = (byte*) char_cursor#9 (byte*) char_cursor#42 (byte*) char_cursor#43 +Alias (byte*) char_cursor#11 = (byte*) char_cursor#45 (byte*) char_cursor#12 +Alias (byte*) line_cursor#14 = (byte*) char_cursor#13 (byte*) line_cursor#3 (byte*) char_cursor#46 (byte*) line_cursor#4 (byte*) char_cursor#14 +Alias (byte*) line_cursor#22 = (byte*) line_cursor#27 (byte*) line_cursor#31 +Alias (byte*) char_cursor#70 = (byte*) char_cursor#75 (byte*) char_cursor#76 +Alias (word) rem16u#11 = (word) rem16u#3 +Alias (word) rem16u#12 = (word) rem16u#4 (word) rem16u#41 (word) rem16u#40 (word) rem16u#39 (word) rem16u#38 (word) rem16u#37 (word) rem16u#36 +Alias (byte*) line_cursor#15 = (byte*) line_cursor#5 (byte*) line_cursor#35 (byte*) line_cursor#32 (byte*) line_cursor#28 (byte*) line_cursor#23 +Alias (byte*) char_cursor#15 = (byte*) char_cursor#47 +Alias (byte*) char_cursor#16 = (byte*) char_cursor#48 +Alias (byte*) char_cursor#17 = (byte*) char_cursor#49 +Alias (byte*) char_cursor#18 = (byte*) char_cursor#50 +Alias (byte*) char_cursor#19 = (byte*) char_cursor#51 +Alias (byte*) line_cursor#16 = (byte*) line_cursor#6 +Alias (byte*) char_cursor#20 = (byte*) char_cursor#52 +Alias (byte) main::i#2 = (byte) main::i#6 (byte) main::i#3 (byte) main::i#7 (byte) main::i#4 (byte) main::i#8 (byte) main::i#5 +Alias (byte*) line_cursor#24 = (byte*) line_cursor#38 (byte*) line_cursor#40 (byte*) line_cursor#36 (byte*) line_cursor#33 (byte*) line_cursor#29 +Alias (word) rem16u#13 = (word) rem16u#34 (word) rem16u#35 (word) rem16u#33 (word) rem16u#32 (word) rem16u#31 (word) rem16u#30 (word) rem16u#29 (word) rem16u#28 (word) rem16u#27 (word) rem16u#26 (word) rem16u#25 (word) rem16u#23 (word) rem16u#19 (word) rem16u#5 +Alias (byte*) char_cursor#21 = (byte*) char_cursor#53 +Alias (byte*) char_cursor#22 = (byte*) char_cursor#54 +Alias (byte*) char_cursor#23 = (byte*) char_cursor#55 +Alias (byte*) char_cursor#24 = (byte*) char_cursor#56 +Alias (byte*) char_cursor#25 = (byte*) char_cursor#57 +Alias (byte*) line_cursor#17 = (byte*) line_cursor#7 (byte*) line_cursor#39 (byte*) line_cursor#37 (byte*) line_cursor#34 (byte*) line_cursor#30 (byte*) line_cursor#25 +Alias (byte*) char_cursor#26 = (byte*) char_cursor#58 (byte*) char_cursor#72 +Alias (byte) main::i#1 = (byte/word~) main::$14 +Alias (byte*) char_cursor#27 = (byte*) char_cursor#59 +Alias (byte*) char_cursor#28 = (byte*) char_cursor#60 +Alias (byte*) char_cursor#29 = (byte*) char_cursor#61 +Alias (byte*) char_cursor#30 = (byte*) char_cursor#62 +Alias (byte*) line_cursor#18 = (byte*) line_cursor#8 (byte*) line_cursor#19 (byte*) line_cursor#9 +Alias (byte*) char_cursor#31 = (byte*) char_cursor#63 (byte*) char_cursor#64 (byte*) char_cursor#32 Alias (word) lin16u_gen::ampl#0 = (word~) lin16u_gen::$0 Alias (word) divr16u::divisor#0 = (word~) lin16u_gen::$1 Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (word) lin16u_gen::length#1 = (word) lin16u_gen::length#2 (word) lin16u_gen::length#4 -Alias (word) lin16u_gen::min#1 = (word) lin16u_gen::min#3 (word) lin16u_gen::min#2 -Alias (word*) lin16u_gen::lintab#3 = (word*) lin16u_gen::lintab#4 (word*) lin16u_gen::lintab#5 -Alias (word) rem16u#12 = (word) rem16u#5 +Alias (word) lin16u_gen::length#2 = (word) lin16u_gen::length#3 (word) lin16u_gen::length#5 +Alias (word) lin16u_gen::min#2 = (word) lin16u_gen::min#4 (word) lin16u_gen::min#3 +Alias (word*) lin16u_gen::lintab#4 = (word*) lin16u_gen::lintab#5 (word*) lin16u_gen::lintab#6 +Alias (word) rem16u#14 = (word) rem16u#6 Alias (word) lin16u_gen::stepi#0 = (word~) lin16u_gen::$2 (word) lin16u_gen::stepi#1 Alias (word) divr16u::divisor#1 = (word~) lin16u_gen::$3 Alias (word) divr16u::return#3 = (word) divr16u::return#6 -Alias (word) rem16u#13 = (word) rem16u#6 +Alias (word) rem16u#15 = (word) rem16u#7 Alias (word) lin16u_gen::stepf#0 = (word~) lin16u_gen::$4 Alias (dword) lin16u_gen::val#1 = (dword~) lin16u_gen::$6 -Alias (word*) lin16u_gen::lintab#1 = (word*~) lin16u_gen::$7 -Alias (word) rem16u#14 = (word) rem16u#19 (word) rem16u#7 -Alias (word) rem16u#15 = (word) rem16u#8 -Alias (byte*) line_cursor#16 = (byte*) line_cursor#8 -Alias (byte*) char_cursor#21 = (byte*) char_cursor#41 +Alias (word*) lin16u_gen::lintab#2 = (word*~) lin16u_gen::$7 +Alias (word) rem16u#16 = (word) rem16u#21 (word) rem16u#8 +Alias (word) rem16u#17 = (word) rem16u#9 +Alias (byte*) line_cursor#10 = (byte*) line_cursor#20 +Alias (byte*) char_cursor#33 = (byte*) char_cursor#65 Succesful SSA optimization Pass2AliasElimination Not aliassing across scopes: divr16u::rem#10 divr16u::rem#3 Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#11 -Not aliassing across scopes: print_str::str#4 print_str::str#1 -Not aliassing across scopes: char_cursor#49 char_cursor#16 -Not aliassing across scopes: line_cursor#17 line_cursor#19 -Not aliassing across scopes: char_cursor#43 char_cursor#18 -Not aliassing across scopes: print_word::w#1 print_word::w#0 -Not aliassing across scopes: char_cursor#44 char_cursor#17 -Not aliassing across scopes: char_cursor#26 char_cursor#10 -Not aliassing across scopes: char_cursor#27 char_cursor#10 +Not aliassing across scopes: print_str::str#9 print_str::str#3 +Not aliassing across scopes: char_cursor#74 char_cursor#21 +Not aliassing across scopes: line_cursor#21 line_cursor#24 +Not aliassing across scopes: char_cursor#67 char_cursor#25 +Not aliassing across scopes: print_word::w#6 print_word::w#2 +Not aliassing across scopes: char_cursor#68 char_cursor#22 +Not aliassing across scopes: char_cursor#38 char_cursor#10 +Not aliassing across scopes: char_cursor#39 char_cursor#10 Not aliassing across scopes: print_byte::b#3 print_byte::b#2 -Not aliassing across scopes: char_cursor#45 char_cursor#47 -Not aliassing across scopes: char_cursor#29 char_cursor#11 +Not aliassing across scopes: char_cursor#69 char_cursor#71 +Not aliassing across scopes: char_cursor#41 char_cursor#11 Not aliassing across scopes: char_cursor#10 char_cursor#11 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#32 char_cursor#45 +Not aliassing across scopes: char_cursor#44 char_cursor#69 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 -Not aliassing across scopes: line_cursor#12 SCREEN#0 -Not aliassing across scopes: rem16u#16 rem16u#0 -Not aliassing across scopes: line_cursor#18 SCREEN#0 -Not aliassing across scopes: char_cursor#46 SCREEN#0 -Not aliassing across scopes: lin16u_gen::lintab#0 main::lintab#0 -Not aliassing across scopes: rem16u#10 rem16u#14 -Not aliassing across scopes: line_cursor#13 line_cursor#12 -Not aliassing across scopes: char_cursor#15 line_cursor#12 +Not aliassing across scopes: line_cursor#14 SCREEN#0 +Not aliassing across scopes: rem16u#18 rem16u#0 +Not aliassing across scopes: line_cursor#22 SCREEN#0 +Not aliassing across scopes: char_cursor#70 SCREEN#0 +Not aliassing across scopes: lin16u_gen::lintab#0 main::lintab1#0 +Not aliassing across scopes: rem16u#11 rem16u#16 +Not aliassing across scopes: lin16u_gen::lintab#1 main::lintab2#0 +Not aliassing across scopes: rem16u#12 rem16u#16 +Not aliassing across scopes: line_cursor#15 line_cursor#14 +Not aliassing across scopes: char_cursor#15 line_cursor#14 +Not aliassing across scopes: char_cursor#16 char_cursor#2 +Not aliassing across scopes: char_cursor#17 char_cursor#39 +Not aliassing across scopes: char_cursor#18 char_cursor#2 +Not aliassing across scopes: char_cursor#19 char_cursor#39 +Not aliassing across scopes: line_cursor#16 line_cursor#1 +Not aliassing across scopes: char_cursor#20 line_cursor#1 Not aliassing across scopes: print_byte::b#2 main::i#2 -Not aliassing across scopes: char_cursor#16 char_cursor#10 -Not aliassing across scopes: char_cursor#17 char_cursor#2 -Not aliassing across scopes: char_cursor#18 char_cursor#27 -Not aliassing across scopes: line_cursor#14 line_cursor#1 -Not aliassing across scopes: char_cursor#19 line_cursor#1 -Not aliassing across scopes: lin16u_gen::max#1 lin16u_gen::max#0 -Not aliassing across scopes: lin16u_gen::min#1 lin16u_gen::min#0 -Not aliassing across scopes: lin16u_gen::length#1 lin16u_gen::length#0 -Not aliassing across scopes: rem16u#18 rem16u#16 -Not aliassing across scopes: lin16u_gen::lintab#3 lin16u_gen::lintab#0 +Not aliassing across scopes: char_cursor#21 char_cursor#10 +Not aliassing across scopes: char_cursor#22 char_cursor#2 +Not aliassing across scopes: char_cursor#23 char_cursor#39 +Not aliassing across scopes: char_cursor#24 char_cursor#2 +Not aliassing across scopes: char_cursor#25 char_cursor#39 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: char_cursor#26 line_cursor#1 +Not aliassing across scopes: char_cursor#27 char_cursor#2 +Not aliassing across scopes: char_cursor#28 char_cursor#39 +Not aliassing across scopes: char_cursor#29 char_cursor#2 +Not aliassing across scopes: char_cursor#30 char_cursor#39 +Not aliassing across scopes: line_cursor#18 line_cursor#1 +Not aliassing across scopes: char_cursor#31 line_cursor#1 +Not aliassing across scopes: lin16u_gen::max#2 lin16u_gen::max#0 +Not aliassing across scopes: lin16u_gen::min#2 lin16u_gen::min#0 +Not aliassing across scopes: lin16u_gen::length#2 lin16u_gen::length#0 +Not aliassing across scopes: rem16u#20 rem16u#18 +Not aliassing across scopes: lin16u_gen::lintab#4 lin16u_gen::lintab#0 Not aliassing across scopes: divr16u::dividend#1 lin16u_gen::ampl#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 -Not aliassing across scopes: rem16u#12 rem16u#1 +Not aliassing across scopes: rem16u#14 rem16u#1 Not aliassing across scopes: lin16u_gen::stepi#0 divr16u::return#2 -Not aliassing across scopes: divr16u::rem#4 rem16u#12 +Not aliassing across scopes: divr16u::rem#4 rem16u#14 Not aliassing across scopes: divr16u::return#3 divr16u::return#0 -Not aliassing across scopes: rem16u#13 rem16u#1 +Not aliassing across scopes: rem16u#15 rem16u#1 Not aliassing across scopes: lin16u_gen::stepf#0 divr16u::return#3 Not aliassing identity: lin16u_gen::step#1 lin16u_gen::step#1 -Not aliassing identity: lin16u_gen::length#3 lin16u_gen::length#3 -Not aliassing identity: rem16u#14 rem16u#14 -Not aliassing across scopes: rem16u#15 rem16u#11 -Not aliassing across scopes: line_cursor#16 line_cursor#14 -Not aliassing across scopes: char_cursor#21 char_cursor#19 +Not aliassing identity: lin16u_gen::length#4 lin16u_gen::length#4 +Not aliassing identity: rem16u#16 rem16u#16 +Not aliassing across scopes: rem16u#17 rem16u#13 +Not aliassing across scopes: line_cursor#10 line_cursor#18 +Not aliassing across scopes: char_cursor#33 char_cursor#31 Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 @@ -2316,158 +2658,195 @@ Not aliassing across scopes: divr16u::rem#10 divr16u::rem#3 Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#11 -Not aliassing across scopes: print_str::str#4 print_str::str#1 -Not aliassing across scopes: char_cursor#49 char_cursor#16 -Not aliassing across scopes: line_cursor#17 line_cursor#19 -Not aliassing across scopes: char_cursor#43 char_cursor#18 -Not aliassing across scopes: print_word::w#1 print_word::w#0 -Not aliassing across scopes: char_cursor#44 char_cursor#17 -Not aliassing across scopes: char_cursor#26 char_cursor#10 -Not aliassing across scopes: char_cursor#27 char_cursor#10 +Not aliassing across scopes: print_str::str#9 print_str::str#3 +Not aliassing across scopes: char_cursor#74 char_cursor#21 +Not aliassing across scopes: line_cursor#21 line_cursor#24 +Not aliassing across scopes: char_cursor#67 char_cursor#25 +Not aliassing across scopes: print_word::w#6 print_word::w#2 +Not aliassing across scopes: char_cursor#68 char_cursor#22 +Not aliassing across scopes: char_cursor#38 char_cursor#10 +Not aliassing across scopes: char_cursor#39 char_cursor#10 Not aliassing across scopes: print_byte::b#3 print_byte::b#2 -Not aliassing across scopes: char_cursor#45 char_cursor#47 -Not aliassing across scopes: char_cursor#29 char_cursor#11 +Not aliassing across scopes: char_cursor#69 char_cursor#71 +Not aliassing across scopes: char_cursor#41 char_cursor#11 Not aliassing across scopes: char_cursor#10 char_cursor#11 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#32 char_cursor#45 +Not aliassing across scopes: char_cursor#44 char_cursor#69 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 -Not aliassing across scopes: line_cursor#12 SCREEN#0 -Not aliassing across scopes: rem16u#16 rem16u#0 -Not aliassing across scopes: line_cursor#18 SCREEN#0 -Not aliassing across scopes: char_cursor#46 SCREEN#0 -Not aliassing across scopes: lin16u_gen::lintab#0 main::lintab#0 -Not aliassing across scopes: rem16u#10 rem16u#14 -Not aliassing across scopes: line_cursor#13 line_cursor#12 -Not aliassing across scopes: char_cursor#15 line_cursor#12 +Not aliassing across scopes: line_cursor#14 SCREEN#0 +Not aliassing across scopes: rem16u#18 rem16u#0 +Not aliassing across scopes: line_cursor#22 SCREEN#0 +Not aliassing across scopes: char_cursor#70 SCREEN#0 +Not aliassing across scopes: lin16u_gen::lintab#0 main::lintab1#0 +Not aliassing across scopes: rem16u#11 rem16u#16 +Not aliassing across scopes: lin16u_gen::lintab#1 main::lintab2#0 +Not aliassing across scopes: rem16u#12 rem16u#16 +Not aliassing across scopes: line_cursor#15 line_cursor#14 +Not aliassing across scopes: char_cursor#15 line_cursor#14 +Not aliassing across scopes: char_cursor#16 char_cursor#2 +Not aliassing across scopes: char_cursor#17 char_cursor#39 +Not aliassing across scopes: char_cursor#18 char_cursor#2 +Not aliassing across scopes: char_cursor#19 char_cursor#39 +Not aliassing across scopes: line_cursor#16 line_cursor#1 +Not aliassing across scopes: char_cursor#20 line_cursor#1 Not aliassing across scopes: print_byte::b#2 main::i#2 -Not aliassing across scopes: char_cursor#16 char_cursor#10 -Not aliassing across scopes: char_cursor#17 char_cursor#2 -Not aliassing across scopes: char_cursor#18 char_cursor#27 -Not aliassing across scopes: line_cursor#14 line_cursor#1 -Not aliassing across scopes: char_cursor#19 line_cursor#1 -Not aliassing across scopes: lin16u_gen::max#1 lin16u_gen::max#0 -Not aliassing across scopes: lin16u_gen::min#1 lin16u_gen::min#0 -Not aliassing across scopes: lin16u_gen::length#1 lin16u_gen::length#0 -Not aliassing across scopes: rem16u#18 rem16u#16 -Not aliassing across scopes: lin16u_gen::lintab#3 lin16u_gen::lintab#0 +Not aliassing across scopes: char_cursor#21 char_cursor#10 +Not aliassing across scopes: char_cursor#22 char_cursor#2 +Not aliassing across scopes: char_cursor#23 char_cursor#39 +Not aliassing across scopes: char_cursor#24 char_cursor#2 +Not aliassing across scopes: char_cursor#25 char_cursor#39 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: char_cursor#26 line_cursor#1 +Not aliassing across scopes: char_cursor#27 char_cursor#2 +Not aliassing across scopes: char_cursor#28 char_cursor#39 +Not aliassing across scopes: char_cursor#29 char_cursor#2 +Not aliassing across scopes: char_cursor#30 char_cursor#39 +Not aliassing across scopes: line_cursor#18 line_cursor#1 +Not aliassing across scopes: char_cursor#31 line_cursor#1 +Not aliassing across scopes: lin16u_gen::max#2 lin16u_gen::max#0 +Not aliassing across scopes: lin16u_gen::min#2 lin16u_gen::min#0 +Not aliassing across scopes: lin16u_gen::length#2 lin16u_gen::length#0 +Not aliassing across scopes: rem16u#20 rem16u#18 +Not aliassing across scopes: lin16u_gen::lintab#4 lin16u_gen::lintab#0 Not aliassing across scopes: divr16u::dividend#1 lin16u_gen::ampl#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 -Not aliassing across scopes: rem16u#12 rem16u#1 +Not aliassing across scopes: rem16u#14 rem16u#1 Not aliassing across scopes: lin16u_gen::stepi#0 divr16u::return#2 -Not aliassing across scopes: divr16u::rem#4 rem16u#12 +Not aliassing across scopes: divr16u::rem#4 rem16u#14 Not aliassing across scopes: divr16u::return#3 divr16u::return#0 -Not aliassing across scopes: rem16u#13 rem16u#1 +Not aliassing across scopes: rem16u#15 rem16u#1 Not aliassing across scopes: lin16u_gen::stepf#0 divr16u::return#3 Not aliassing identity: lin16u_gen::step#1 lin16u_gen::step#1 -Not aliassing identity: lin16u_gen::length#3 lin16u_gen::length#3 -Not aliassing identity: rem16u#14 rem16u#14 -Not aliassing across scopes: rem16u#15 rem16u#11 -Not aliassing across scopes: line_cursor#16 line_cursor#14 -Not aliassing across scopes: char_cursor#21 char_cursor#19 +Not aliassing identity: lin16u_gen::length#4 lin16u_gen::length#4 +Not aliassing identity: rem16u#16 rem16u#16 +Not aliassing across scopes: rem16u#17 rem16u#13 +Not aliassing across scopes: line_cursor#10 line_cursor#18 +Not aliassing across scopes: char_cursor#33 char_cursor#31 Self Phi Eliminated (word) divr16u::divisor#2 -Self Phi Eliminated (byte*) char_cursor#24 -Self Phi Eliminated (word) rem16u#11 +Self Phi Eliminated (byte*) char_cursor#36 +Self Phi Eliminated (word) rem16u#13 Self Phi Eliminated (dword) lin16u_gen::step#1 -Self Phi Eliminated (word) lin16u_gen::length#3 -Self Phi Eliminated (word) rem16u#14 +Self Phi Eliminated (word) lin16u_gen::length#4 +Self Phi Eliminated (word) rem16u#16 Succesful SSA optimization Pass2SelfPhiElimination Redundant Phi (word) divr16u::divisor#2 (word) divr16u::divisor#6 -Redundant Phi (byte*) print_str::str#4 (byte*) print_str::str#1 -Redundant Phi (byte*) char_cursor#49 (byte*) char_cursor#16 -Redundant Phi (byte*) line_cursor#17 (byte*) line_cursor#19 -Redundant Phi (byte*) char_cursor#43 (byte*) char_cursor#18 -Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#43 -Redundant Phi (word) print_word::w#1 (word) print_word::w#0 -Redundant Phi (byte*) char_cursor#44 (byte*) char_cursor#17 -Redundant Phi (byte*) char_cursor#26 (byte*) char_cursor#10 -Redundant Phi (byte*) char_cursor#27 (byte*) char_cursor#10 -Redundant Phi (byte*) char_cursor#29 (byte*) char_cursor#11 +Redundant Phi (byte*) char_cursor#36 (byte*) char_cursor#67 +Redundant Phi (byte*) char_cursor#38 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#39 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#41 (byte*) char_cursor#11 Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#11 -Redundant Phi (word) rem16u#16 (word) rem16u#0 -Redundant Phi (byte*) line_cursor#18 (byte*) SCREEN#0 -Redundant Phi (byte*) char_cursor#46 (byte*) SCREEN#0 -Redundant Phi (word) rem16u#10 (word) rem16u#14 -Redundant Phi (byte*) line_cursor#13 (byte*) line_cursor#12 -Redundant Phi (byte*) char_cursor#15 (byte*) line_cursor#12 -Redundant Phi (word) rem16u#11 (word) rem16u#10 -Redundant Phi (byte*) char_cursor#16 (byte*) char_cursor#10 -Redundant Phi (byte*) char_cursor#17 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#27 -Redundant Phi (byte*) line_cursor#14 (byte*) line_cursor#1 -Redundant Phi (byte*) char_cursor#19 (byte*) line_cursor#1 -Redundant Phi (word) lin16u_gen::max#1 (word) lin16u_gen::max#0 -Redundant Phi (word) lin16u_gen::min#1 (word) lin16u_gen::min#0 -Redundant Phi (word) lin16u_gen::length#1 (word) lin16u_gen::length#0 -Redundant Phi (word) rem16u#18 (word) rem16u#16 -Redundant Phi (word*) lin16u_gen::lintab#3 (word*) lin16u_gen::lintab#0 -Redundant Phi (word) rem16u#12 (word) rem16u#1 -Redundant Phi (word) rem16u#13 (word) rem16u#1 +Redundant Phi (word) rem16u#18 (word) rem16u#0 +Redundant Phi (byte*) line_cursor#22 (byte*) SCREEN#0 +Redundant Phi (byte*) char_cursor#70 (byte*) SCREEN#0 +Redundant Phi (word) rem16u#11 (word) rem16u#16 +Redundant Phi (word) rem16u#12 (word) rem16u#16 +Redundant Phi (byte*) line_cursor#15 (byte*) line_cursor#14 +Redundant Phi (byte*) char_cursor#15 (byte*) line_cursor#14 +Redundant Phi (byte*) char_cursor#16 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#17 (byte*) char_cursor#39 +Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#39 +Redundant Phi (byte*) line_cursor#16 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#20 (byte*) line_cursor#1 +Redundant Phi (word) rem16u#13 (word) rem16u#12 +Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#22 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#23 (byte*) char_cursor#39 +Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#39 +Redundant Phi (byte*) line_cursor#17 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#26 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#27 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#28 (byte*) char_cursor#39 +Redundant Phi (byte*) char_cursor#29 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#30 (byte*) char_cursor#39 +Redundant Phi (byte*) line_cursor#18 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#31 (byte*) line_cursor#1 +Redundant Phi (word) rem16u#14 (word) rem16u#1 +Redundant Phi (word) rem16u#15 (word) rem16u#1 Redundant Phi (dword) lin16u_gen::step#1 (dword) lin16u_gen::step#0 -Redundant Phi (word) lin16u_gen::length#3 (word) lin16u_gen::length#1 -Redundant Phi (word) rem16u#14 (word) rem16u#13 -Redundant Phi (word) rem16u#15 (word) rem16u#11 -Redundant Phi (byte*) line_cursor#16 (byte*) line_cursor#14 -Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#19 +Redundant Phi (word) lin16u_gen::length#4 (word) lin16u_gen::length#2 +Redundant Phi (word) rem16u#16 (word) rem16u#15 +Redundant Phi (word) rem16u#17 (word) rem16u#13 +Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#18 +Redundant Phi (byte*) char_cursor#33 (byte*) char_cursor#31 +Succesful SSA optimization Pass2RedundantPhiElimination +Redundant Phi (byte*) char_cursor#67 (byte*) char_cursor#11 +Redundant Phi (byte*) char_cursor#68 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#71 (byte*) line_cursor#1 +Redundant Phi (byte*) line_cursor#24 (byte*) line_cursor#1 Succesful SSA optimization Pass2RedundantPhiElimination Simple Condition (boolean~) divr16u::$4 if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 Simple Condition (boolean~) divr16u::$9 if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 Simple Condition (boolean~) divr16u::$11 if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 +Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (boolean~) main::$8 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword~) main::$7) goto main::@1 -Simple Condition (boolean~) lin16u_gen::$8 if((word) lin16u_gen::i#1<(word) lin16u_gen::length#0) goto lin16u_gen::@1 +Simple Condition (boolean~) main::$16 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword~) main::$15) goto main::@1 +Simple Condition (boolean~) lin16u_gen::$8 if((word) lin16u_gen::i#1<(word) lin16u_gen::length#2) goto lin16u_gen::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const string) print_byte::hextab#0 = print_byte::$4 -Constant (const word[20]) main::lintab#0 = { fill( 20, 0) } +Constant (const word[20]) main::lintab1#0 = { fill( 20, 0) } Constant (const word) lin16u_gen::min#0 = 557 Constant (const word) lin16u_gen::max#0 = 29793 Constant (const word) lin16u_gen::length#0 = 20 -Constant (const byte) main::i#0 = 0 +Constant (const word[20]) main::lintab2#0 = { fill( 20, 0) } +Constant (const word) lin16u_gen::min#1 = 31179 +Constant (const word) lin16u_gen::max#1 = 63361 +Constant (const word) lin16u_gen::length#1 = 20 Constant (const string) print_str::str#1 = main::str -Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$7 = 20*2 +Constant (const word) print_word::w#0 = 557 +Constant (const string) print_str::str#2 = main::str1 +Constant (const word) print_word::w#1 = 31179 +Constant (const byte) main::i#0 = 0 +Constant (const string) print_str::str#3 = main::str2 +Constant (const string) print_str::str#4 = main::str3 +Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$15 = 20*2 +Constant (const string) print_str::str#5 = main::str4 +Constant (const word) print_word::w#4 = 29793 +Constant (const string) print_str::str#6 = main::str5 +Constant (const word) print_word::w#5 = 63361 Constant (const word) divr16u::rem#3 = 0 Constant (const word) divr16u::dividend#2 = 0 Constant (const word) lin16u_gen::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = SCREEN#0 Constant (const byte*) print_cls::$0 = SCREEN#0+1000 -Constant (const byte*) line_cursor#12 = SCREEN#0 -Constant (const word[20]) lin16u_gen::lintab#0 = main::lintab#0 -Constant (const word) lin16u_gen::ampl#0 = lin16u_gen::max#0-lin16u_gen::min#0 -Constant (const word) divr16u::divisor#0 = lin16u_gen::length#0-1 -Constant (const word) divr16u::divisor#1 = lin16u_gen::length#0-1 -Succesful SSA optimization Pass2ConstantIdentification -Constant (const word) divr16u::dividend#1 = lin16u_gen::ampl#0 +Constant (const byte*) line_cursor#14 = SCREEN#0 +Constant (const word[20]) lin16u_gen::lintab#0 = main::lintab1#0 +Constant (const word[20]) lin16u_gen::lintab#1 = main::lintab2#0 Succesful SSA optimization Pass2ConstantIdentification Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Fixing inline constructor with lin16u_gen::$9 ← lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0 -Fixing inline constructor with lin16u_gen::$10 ← lin16u_gen::min#0 dw= 0 +Fixing inline constructor with lin16u_gen::$10 ← lin16u_gen::min#2 dw= 0 Succesful SSA optimization Pass2FixInlineConstructors -Eliminating unused constant (const word) rem16u#0 -Succesful SSA optimization PassNEliminateUnusedVars Culled Empty Block (label) @2 Culled Empty Block (label) @6 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_cls::@2 -Culled Empty Block (label) main::@4 +Culled Empty Block (label) main::@10 +Culled Empty Block (label) main::@21 Culled Empty Block (label) @19 Succesful SSA optimization Pass2CullEmptyBlocks +Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#11 -Not aliassing across scopes: char_cursor#2 char_cursor#11 -Not aliassing across scopes: line_cursor#9 line_cursor#19 +Not aliassing across scopes: char_cursor#74 char_cursor#11 +Not aliassing across scopes: print_word::w#6 print_word::w#2 Not aliassing across scopes: print_byte::b#3 print_byte::b#2 -Not aliassing across scopes: char_cursor#45 char_cursor#47 +Not aliassing across scopes: char_cursor#69 line_cursor#1 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#32 char_cursor#45 +Not aliassing across scopes: char_cursor#44 char_cursor#69 Not aliassing across scopes: print_byte::b#2 main::i#2 +Not aliassing across scopes: divr16u::dividend#1 lin16u_gen::ampl#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: lin16u_gen::stepi#0 divr16u::return#2 Not aliassing across scopes: divr16u::rem#4 rem16u#1 @@ -2476,31 +2855,36 @@ Not aliassing across scopes: lin16u_gen::stepf#0 divr16u::return#3 Alias (dword) lin16u_gen::step#0 = (dword~) lin16u_gen::$9 Alias (dword) lin16u_gen::val#0 = (dword~) lin16u_gen::$10 Succesful SSA optimization Pass2AliasElimination +Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#11 -Not aliassing across scopes: char_cursor#2 char_cursor#11 -Not aliassing across scopes: line_cursor#9 line_cursor#19 +Not aliassing across scopes: char_cursor#74 char_cursor#11 +Not aliassing across scopes: print_word::w#6 print_word::w#2 Not aliassing across scopes: print_byte::b#3 print_byte::b#2 -Not aliassing across scopes: char_cursor#45 char_cursor#47 +Not aliassing across scopes: char_cursor#69 line_cursor#1 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#32 char_cursor#45 +Not aliassing across scopes: char_cursor#44 char_cursor#69 Not aliassing across scopes: print_byte::b#2 main::i#2 +Not aliassing across scopes: divr16u::dividend#1 lin16u_gen::ampl#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: lin16u_gen::stepi#0 divr16u::return#2 Not aliassing across scopes: divr16u::rem#4 rem16u#1 Not aliassing across scopes: divr16u::return#3 divr16u::return#0 Not aliassing across scopes: lin16u_gen::stepf#0 divr16u::return#3 -Constant (const dword) lin16u_gen::val#0 = lin16u_gen::min#0*65536+0 -Succesful SSA optimization Pass2ConstantIdentification Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#11 -Not aliassing across scopes: char_cursor#2 char_cursor#11 -Not aliassing across scopes: line_cursor#9 line_cursor#19 +Not aliassing across scopes: char_cursor#74 char_cursor#11 +Not aliassing across scopes: print_word::w#6 print_word::w#2 Not aliassing across scopes: print_byte::b#3 print_byte::b#2 -Not aliassing across scopes: char_cursor#45 char_cursor#47 +Not aliassing across scopes: char_cursor#69 line_cursor#1 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#32 char_cursor#45 +Not aliassing across scopes: char_cursor#44 char_cursor#69 Not aliassing across scopes: print_byte::b#2 main::i#2 +Not aliassing across scopes: divr16u::dividend#1 lin16u_gen::ampl#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: lin16u_gen::stepi#0 divr16u::return#2 Not aliassing across scopes: divr16u::rem#4 rem16u#1 @@ -2508,6 +2892,7 @@ Not aliassing across scopes: divr16u::return#3 divr16u::return#0 Not aliassing across scopes: lin16u_gen::stepf#0 divr16u::return#3 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const word) divr16u::quotient#0 Inlining constant with var siblings (const word) divr16u::quotient#0 @@ -2525,71 +2910,134 @@ Inlining constant with var siblings (const word) divr16u::rem#3 Inlining constant with var siblings (const word) divr16u::dividend#2 Inlining constant with var siblings (const word) divr16u::dividend#2 Inlining constant with var siblings (const word) divr16u::dividend#2 -Inlining constant with var siblings (const word) divr16u::divisor#0 -Inlining constant with different constant siblings (const word) divr16u::divisor#0 -Inlining constant with var siblings (const word) divr16u::divisor#1 -Inlining constant with different constant siblings (const word) divr16u::divisor#1 -Inlining constant with var siblings (const word) divr16u::dividend#1 -Inlining constant with var siblings (const word) divr16u::dividend#1 -Inlining constant with var siblings (const word) divr16u::dividend#1 -Inlining constant with different constant siblings (const word) divr16u::dividend#1 +Inlining constant with var siblings (const word) divr16u::dividend#2 Inlining constant with var siblings (const string) print_str::str#1 Inlining constant with var siblings (const string) print_str::str#1 +Inlining constant with var siblings (const string) print_str::str#1 +Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const string) print_str::str#3 +Inlining constant with var siblings (const string) print_str::str#3 +Inlining constant with var siblings (const string) print_str::str#3 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#6 +Inlining constant with var siblings (const string) print_str::str#6 +Inlining constant with var siblings (const string) print_str::str#6 +Inlining constant with var siblings (const word) print_word::w#0 +Inlining constant with var siblings (const word) print_word::w#0 +Inlining constant with var siblings (const word) print_word::w#0 +Inlining constant with different constant siblings (const word) print_word::w#0 +Inlining constant with different constant siblings (const word) print_word::w#0 +Inlining constant with different constant siblings (const word) print_word::w#0 +Inlining constant with var siblings (const word) print_word::w#1 +Inlining constant with var siblings (const word) print_word::w#1 +Inlining constant with var siblings (const word) print_word::w#1 +Inlining constant with different constant siblings (const word) print_word::w#1 +Inlining constant with different constant siblings (const word) print_word::w#1 +Inlining constant with different constant siblings (const word) print_word::w#1 +Inlining constant with var siblings (const word) print_word::w#4 +Inlining constant with var siblings (const word) print_word::w#4 +Inlining constant with var siblings (const word) print_word::w#4 +Inlining constant with different constant siblings (const word) print_word::w#4 +Inlining constant with different constant siblings (const word) print_word::w#4 +Inlining constant with different constant siblings (const word) print_word::w#4 +Inlining constant with var siblings (const word) print_word::w#5 +Inlining constant with var siblings (const word) print_word::w#5 +Inlining constant with var siblings (const word) print_word::w#5 +Inlining constant with different constant siblings (const word) print_word::w#5 +Inlining constant with different constant siblings (const word) print_word::w#5 +Inlining constant with different constant siblings (const word) print_word::w#5 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const word) lin16u_gen::min#0 +Inlining constant with different constant siblings (const word) lin16u_gen::min#0 +Inlining constant with var siblings (const word) lin16u_gen::max#0 +Inlining constant with different constant siblings (const word) lin16u_gen::max#0 +Inlining constant with var siblings (const word) lin16u_gen::length#0 +Inlining constant with var siblings (const word) lin16u_gen::min#1 +Inlining constant with different constant siblings (const word) lin16u_gen::min#1 +Inlining constant with var siblings (const word) lin16u_gen::max#1 +Inlining constant with different constant siblings (const word) lin16u_gen::max#1 +Inlining constant with var siblings (const word) lin16u_gen::length#1 Inlining constant with var siblings (const word) lin16u_gen::i#0 Inlining constant with var siblings (const word) lin16u_gen::i#0 Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#0 Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#0 -Inlining constant with var siblings (const dword) lin16u_gen::val#0 -Inlining constant with var siblings (const dword) lin16u_gen::val#0 -Inlining constant with var siblings (const byte*) line_cursor#12 -Inlining constant with var siblings (const byte*) line_cursor#12 -Inlining constant with var siblings (const byte*) line_cursor#12 +Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#0 +Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#1 +Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#1 +Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#1 +Inlining constant with var siblings (const word) rem16u#0 +Inlining constant with var siblings (const word) rem16u#0 +Inlining constant with var siblings (const byte*) line_cursor#14 +Inlining constant with var siblings (const byte*) line_cursor#14 +Inlining constant with var siblings (const byte*) line_cursor#14 Constant inlined divr16u::rem#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_cls::$0 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000 Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined divr16u::dividend#1 = (const word) lin16u_gen::ampl#0 -Constant inlined print_cls::sc#0 = (const byte*) SCREEN#0 -Constant inlined divr16u::dividend#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined line_cursor#12 = (const byte*) SCREEN#0 +Constant inlined lin16u_gen::max#0 = (word/signed word/dword/signed dword) 29793 +Constant inlined main::$15 = (byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined lin16u_gen::max#1 = (word/dword/signed dword) 63361 Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined lin16u_gen::val#0 = (const word) lin16u_gen::min#0*(dword/signed dword) 65536+(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined lin16u_gen::min#0 = (word/signed word/dword/signed dword) 557 +Constant inlined print_word::w#1 = (word/signed word/dword/signed dword) 31179 +Constant inlined print_word::w#0 = (word/signed word/dword/signed dword) 557 +Constant inlined rem16u#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined print_cls::sc#0 = (const byte*) SCREEN#0 +Constant inlined print_word::w#5 = (word/dword/signed dword) 63361 +Constant inlined divr16u::dividend#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined print_word::w#4 = (word/signed word/dword/signed dword) 29793 +Constant inlined lin16u_gen::length#1 = (byte/signed byte/word/signed word/dword/signed dword) 20 +Constant inlined lin16u_gen::length#0 = (byte/signed byte/word/signed word/dword/signed dword) 20 +Constant inlined line_cursor#14 = (const byte*) SCREEN#0 +Constant inlined print_str::str#4 = (const string) main::str3 +Constant inlined print_str::str#3 = (const string) main::str2 +Constant inlined print_str::str#2 = (const string) main::str1 Constant inlined print_str::str#1 = (const string) main::str Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 -Constant inlined divr16u::divisor#1 = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined lin16u_gen::min#1 = (word/signed word/dword/signed dword) 31179 Constant inlined lin16u_gen::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined divr16u::divisor#0 = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined main::$7 = (byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined lin16u_gen::lintab#0 = (const word[20]) main::lintab#0 +Constant inlined lin16u_gen::lintab#1 = (const word[20]) main::lintab2#0 +Constant inlined print_str::str#6 = (const string) main::str5 +Constant inlined lin16u_gen::lintab#0 = (const word[20]) main::lintab1#0 +Constant inlined print_str::str#5 = (const string) main::str4 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @18 @end main main::@3 main::@1 main::@5 main::@6 main::@7 main::@8 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return -Added new block during phi lifting main::@9(between main::@8 and main::@1) +Block Sequence Planned @begin @18 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@1 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@2 main::@17 main::@18 main::@19 main::@20 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return +Added new block during phi lifting main::@22(between main::@16 and main::@1) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting lin16u_gen::@5(between lin16u_gen::@1 and lin16u_gen::@1) Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1) Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2) Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3) -Block Sequence Planned @begin @18 @end main main::@3 main::@1 main::@5 main::@6 main::@7 main::@8 main::@return main::@9 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3 lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return lin16u_gen::@5 divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 +Block Sequence Planned @begin @18 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@1 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@2 main::@17 main::@18 main::@19 main::@20 main::@return main::@22 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3 lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return lin16u_gen::@5 divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 Adding NOP phi() at start of @begin Adding NOP phi() at start of @18 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of main::@4 Adding NOP phi() at start of main::@5 -Adding NOP phi() at start of main::@7 +Adding NOP phi() at start of main::@6 +Adding NOP phi() at start of main::@8 +Adding NOP phi() at start of main::@9 +Adding NOP phi() at start of main::@17 +Adding NOP phi() at start of main::@19 Adding NOP phi() at start of print_cls -Adding NOP phi() at start of lin16u_gen CALL GRAPH Calls in [] to main:2 -Calls in [main] to lin16u_gen:5 print_cls:7 print_byte:12 print_str:14 print_word:16 print_ln:18 -Calls in [print_word] to print_byte:34 print_byte:38 -Calls in [print_byte] to print_char:45 print_char:50 -Calls in [lin16u_gen] to divr16u:73 divr16u:78 +Calls in [main] to lin16u_gen:5 lin16u_gen:7 print_cls:9 print_str:11 print_word:13 print_str:15 print_word:17 print_ln:19 print_byte:24 print_str:26 print_word:29 print_str:31 print_word:34 print_ln:36 print_str:40 print_word:42 print_str:44 print_word:46 print_ln:48 +Calls in [print_word] to print_byte:62 print_byte:66 +Calls in [print_byte] to print_char:73 print_char:78 +Calls in [lin16u_gen] to divr16u:108 divr16u:115 Propagating live ranges... Propagating live ranges... @@ -2609,61 +3057,91 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Created 24 initial phi equivalence classes -Coalesced [10] print_byte::b#5 ← print_byte::b#2 -Coalesced [11] char_cursor#52 ← char_cursor#47 -Coalesced [22] main::i#7 ← main::i#1 -Not coalescing [23] char_cursor#51 ← line_cursor#1 -Coalesced [24] line_cursor#25 ← line_cursor#1 -Coalesced [25] line_cursor#26 ← line_cursor#19 -Coalesced (already) [30] line_cursor#27 ← line_cursor#1 -Coalesced [32] print_byte::b#6 ← print_byte::b#0 -Coalesced [33] char_cursor#53 ← char_cursor#2 -Coalesced [36] print_byte::b#7 ← print_byte::b#1 -Coalesced [37] char_cursor#54 ← char_cursor#11 -Coalesced [43] print_char::ch#3 ← print_char::ch#0 -Coalesced [44] char_cursor#55 ← char_cursor#45 -Coalesced [48] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [49] char_cursor#56 ← char_cursor#11 -Coalesced (already) [56] char_cursor#57 ← char_cursor#11 -Coalesced [63] print_str::str#5 ← print_str::str#0 -Coalesced [64] char_cursor#58 ← char_cursor#1 -Coalesced [71] print_cls::sc#3 ← print_cls::sc#1 -Coalesced [77] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [90] lin16u_gen::val#3 ← lin16u_gen::val#1 -Coalesced [91] lin16u_gen::lintab#6 ← lin16u_gen::lintab#1 -Coalesced [92] lin16u_gen::i#3 ← lin16u_gen::i#1 -Coalesced [94] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [95] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [102] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [109] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [110] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [116] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [117] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [118] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [119] divr16u::i#7 ← divr16u::i#1 -Coalesced [120] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [121] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [122] divr16u::rem#15 ← divr16u::rem#0 -Coalesced down to 15 phi equivalence classes +Propagating live ranges... +Propagating live ranges... +Created 31 initial phi equivalence classes +Coalesced [6] rem16u#42 ← rem16u#1 +Coalesced [14] char_cursor#86 ← char_cursor#11 +Coalesced [22] print_byte::b#5 ← print_byte::b#2 +Not coalescing [23] char_cursor#77 ← line_cursor#1 +Coalesced (already) [25] char_cursor#82 ← char_cursor#11 +Coalesced [28] print_word::w#8 ← print_word::w#2 +Coalesced (already) [30] char_cursor#83 ← char_cursor#11 +Coalesced [33] print_word::w#9 ← print_word::w#3 +Coalesced [35] line_cursor#41 ← line_cursor#1 +Not coalescing [39] char_cursor#85 ← line_cursor#1 +Coalesced (already) [43] char_cursor#84 ← char_cursor#11 +Coalesced (already) [47] line_cursor#42 ← line_cursor#1 +Coalesced [50] main::i#9 ← main::i#1 +Coalesced [52] line_cursor#43 ← line_cursor#21 +Coalesced (already) [57] line_cursor#44 ← line_cursor#1 +Coalesced [60] print_byte::b#6 ← print_byte::b#0 +Coalesced [61] char_cursor#78 ← char_cursor#2 +Coalesced [64] print_byte::b#7 ← print_byte::b#1 +Coalesced [65] char_cursor#79 ← char_cursor#11 +Coalesced [71] print_char::ch#3 ← print_char::ch#0 +Coalesced [72] char_cursor#80 ← char_cursor#69 +Coalesced [76] print_char::ch#4 ← print_char::ch#1 +Coalesced (already) [77] char_cursor#81 ← char_cursor#11 +Coalesced [85] print_str::str#10 ← print_str::str#9 +Coalesced (already) [86] char_cursor#87 ← char_cursor#74 +Coalesced [93] print_str::str#11 ← print_str::str#0 +Coalesced [94] char_cursor#88 ← char_cursor#1 +Coalesced [101] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [106] divr16u::dividend#9 ← divr16u::dividend#1 +Coalesced [107] divr16u::divisor#8 ← divr16u::divisor#0 +Coalesced [113] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [114] divr16u::divisor#9 ← divr16u::divisor#1 +Coalesced [120] lin16u_gen::val#4 ← lin16u_gen::val#0 +Coalesced [121] lin16u_gen::lintab#8 ← lin16u_gen::lintab#4 +Coalesced [130] lin16u_gen::val#3 ← lin16u_gen::val#1 +Coalesced [131] lin16u_gen::lintab#7 ← lin16u_gen::lintab#2 +Coalesced [132] lin16u_gen::i#3 ← lin16u_gen::i#1 +Coalesced [134] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [135] divr16u::dividend#10 ← divr16u::dividend#5 +Coalesced [142] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [149] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [150] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [154] rem16u#1 ← divr16u::rem#11 +Coalesced [156] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [157] divr16u::dividend#11 ← divr16u::dividend#0 +Coalesced [158] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [159] divr16u::i#7 ← divr16u::i#1 +Coalesced [160] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [161] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [162] divr16u::rem#15 ← divr16u::rem#0 +Coalesced down to 19 phi equivalence classes +Culled Empty Block (label) main::@22 Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_cls::@3 Culled Empty Block (label) lin16u_gen::@5 +Culled Empty Block (label) divr16u::@6 Culled Empty Block (label) divr16u::@8 Culled Empty Block (label) divr16u::@10 Culled Empty Block (label) divr16u::@9 -Block Sequence Planned @begin @18 @end main main::@3 main::@1 main::@5 main::@6 main::@7 main::@8 main::@return main::@9 print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return +Block Sequence Planned @begin @18 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@1 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@2 main::@17 main::@18 main::@19 main::@20 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return Adding NOP phi() at start of @begin Adding NOP phi() at start of @18 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of main::@4 Adding NOP phi() at start of main::@5 +Adding NOP phi() at start of main::@6 Adding NOP phi() at start of main::@7 -Adding NOP phi() at start of print_ln -Adding NOP phi() at start of print_str +Adding NOP phi() at start of main::@8 +Adding NOP phi() at start of main::@9 +Adding NOP phi() at start of main::@11 +Adding NOP phi() at start of main::@13 +Adding NOP phi() at start of main::@15 +Adding NOP phi() at start of main::@17 +Adding NOP phi() at start of main::@18 +Adding NOP phi() at start of main::@19 +Adding NOP phi() at start of main::@20 Adding NOP phi() at start of print_cls -Adding NOP phi() at start of lin16u_gen +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... @@ -2689,183 +3167,239 @@ FINAL CONTROL FLOW GRAPH [3] phi() [ ] ( ) main: scope:[main] from @18 [4] phi() [ ] ( main:2 [ ] ) - [5] call lin16u_gen param-assignment [ ] ( main:2 [ ] ) + [5] call lin16u_gen param-assignment [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] ) to:main::@3 main::@3: scope:[main] from main - [6] phi() [ ] ( main:2 [ ] ) - [7] call print_cls param-assignment [ ] ( main:2 [ ] ) - to:main::@1 -main::@1: scope:[main] from main::@3 main::@9 - [8] (byte*) line_cursor#19 ← phi( main::@3/(const byte*) SCREEN#0 main::@9/(byte*) line_cursor#1 ) [ main::i#2 char_cursor#47 line_cursor#19 ] ( main:2 [ main::i#2 char_cursor#47 line_cursor#19 ] ) - [8] (byte*) char_cursor#47 ← phi( main::@3/(const byte*) SCREEN#0 main::@9/(byte*~) char_cursor#51 ) [ main::i#2 char_cursor#47 line_cursor#19 ] ( main:2 [ main::i#2 char_cursor#47 line_cursor#19 ] ) - [8] (byte) main::i#2 ← phi( main::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@9/(byte) main::i#1 ) [ main::i#2 char_cursor#47 line_cursor#19 ] ( main:2 [ main::i#2 char_cursor#47 line_cursor#19 ] ) - [9] (byte) print_byte::b#2 ← (byte) main::i#2 [ main::i#2 char_cursor#47 line_cursor#19 print_byte::b#2 ] ( main:2 [ main::i#2 char_cursor#47 line_cursor#19 print_byte::b#2 ] ) - [10] call print_byte param-assignment [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [6] phi() [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] ) + [7] call lin16u_gen param-assignment [ ] ( main:2 [ ] ) + to:main::@4 +main::@4: scope:[main] from main::@3 + [8] phi() [ ] ( main:2 [ ] ) + [9] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@5 -main::@5: scope:[main] from main::@1 - [11] phi() [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - [12] call print_str param-assignment [ main::i#2 line_cursor#19 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#2 ] ) +main::@5: scope:[main] from main::@4 + [10] phi() [ ] ( main:2 [ ] ) + [11] call print_str param-assignment [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) to:main::@6 main::@6: scope:[main] from main::@5 - [13] (word) print_word::w#0 ← *((const word[20]) main::lintab#0 + (byte) main::i#2) [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ) - [14] call print_word param-assignment [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [12] phi() [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) + [13] call print_word param-assignment [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) to:main::@7 main::@7: scope:[main] from main::@6 - [15] phi() [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - [16] call print_ln param-assignment [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) + [14] phi() [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + [15] call print_str param-assignment [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) to:main::@8 main::@8: scope:[main] from main::@7 - [17] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) - [18] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@9 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) - to:main::@return -main::@return: scope:[main] from main::@8 - [19] return [ ] ( main:2 [ ] ) - to:@return + [16] phi() [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) + [17] call print_word param-assignment [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + to:main::@9 main::@9: scope:[main] from main::@8 - [20] (byte*~) char_cursor#51 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#51 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#51 line_cursor#1 ] ) + [18] phi() [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + [19] call print_ln param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) to:main::@1 -print_ln: scope:[print_ln] from main::@7 - [21] phi() [ line_cursor#19 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#19 char_cursor#11 ] ) +main::@1: scope:[main] from main::@16 main::@9 + [20] (byte) main::i#2 ← phi( main::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@16/(byte) main::i#1 ) [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) + [21] (byte) print_byte::b#2 ← (byte) main::i#2 [ main::i#2 print_byte::b#2 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 line_cursor#1 ] ) + [22] (byte*~) char_cursor#77 ← (byte*) line_cursor#1 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ) + [23] call print_byte param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + to:main::@11 +main::@11: scope:[main] from main::@1 + [24] phi() [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + [25] call print_str param-assignment [ main::i#2 line_cursor#1 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#2 ] ) + to:main::@12 +main::@12: scope:[main] from main::@11 + [26] (word) print_word::w#2 ← *((const word[20]) main::lintab1#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ) + [27] call print_word param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + to:main::@13 +main::@13: scope:[main] from main::@12 + [28] phi() [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + [29] call print_str param-assignment [ main::i#2 line_cursor#1 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#2 ] ) + to:main::@14 +main::@14: scope:[main] from main::@13 + [30] (word) print_word::w#3 ← *((const word[20]) main::lintab2#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ) + [31] call print_word param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + to:main::@15 +main::@15: scope:[main] from main::@14 + [32] phi() [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + [33] call print_ln param-assignment [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) + to:main::@16 +main::@16: scope:[main] from main::@15 + [34] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) + [35] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) + to:main::@2 +main::@2: scope:[main] from main::@16 + [36] (byte*~) char_cursor#85 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#85 ] ( main:2 [ line_cursor#1 char_cursor#85 ] ) + [37] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + to:main::@17 +main::@17: scope:[main] from main::@2 + [38] phi() [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + [39] call print_word param-assignment [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + to:main::@18 +main::@18: scope:[main] from main::@17 + [40] phi() [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + [41] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + to:main::@19 +main::@19: scope:[main] from main::@18 + [42] phi() [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + [43] call print_word param-assignment [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + to:main::@20 +main::@20: scope:[main] from main::@19 + [44] phi() [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + [45] call print_ln param-assignment [ ] ( main:2 [ ] ) + to:main::@return +main::@return: scope:[main] from main::@20 + [46] return [ ] ( main:2 [ ] ) + to:@return +print_ln: scope:[print_ln] from main::@15 main::@20 main::@9 + [47] (byte*) line_cursor#21 ← phi( main::@15/(byte*) line_cursor#1 main::@20/(byte*) line_cursor#1 main::@9/(const byte*) SCREEN#0 ) [ line_cursor#21 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#21 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#21 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#21 char_cursor#11 ] ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [22] (byte*) line_cursor#9 ← phi( print_ln/(byte*) line_cursor#19 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#9 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#9 char_cursor#11 ] ) - [23] (byte*) line_cursor#1 ← (byte*) line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) - [24] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + [48] (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#21 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#11 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#11 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#11 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#11 char_cursor#11 ] ) + [49] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) + [50] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [25] return [ line_cursor#1 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 ] ) + [51] return [ line_cursor#1 ] ( main:2::print_ln:19 [ line_cursor#1 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 ] main:2::print_ln:45 [ line_cursor#1 ] ) to:@return -print_word: scope:[print_word] from main::@6 - [26] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#0 char_cursor#2 ] ) - [27] call print_byte param-assignment [ print_word::w#0 char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] ) +print_word: scope:[print_word] from main::@12 main::@14 main::@17 main::@19 main::@6 main::@8 + [52] (word) print_word::w#6 ← phi( main::@12/(word) print_word::w#2 main::@14/(word) print_word::w#3 main::@17/(word/signed word/dword/signed dword) 29793 main::@19/(word/dword/signed dword) 63361 main::@6/(word/signed word/dword/signed dword) 557 main::@8/(word/signed word/dword/signed dword) 31179 ) [ print_word::w#6 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 char_cursor#2 ] ) + [53] (byte) print_byte::b#0 ← > (word) print_word::w#6 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] ) + [54] call print_byte param-assignment [ char_cursor#11 print_word::w#6 ] ( main:2::print_word:13 [ char_cursor#11 print_word::w#6 ] main:2::print_word:17 [ char_cursor#11 print_word::w#6 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_word::w#6 ] ) to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [28] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#1 ] ) - [29] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [55] (byte) print_byte::b#1 ← < (word) print_word::w#6 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:13 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:17 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] ) + [56] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [30] return [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [57] return [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) to:@return print_byte: scope:[print_byte] from main::@1 print_word print_word::@1 - [31] (byte*) char_cursor#45 ← phi( main::@1/(byte*) char_cursor#47 print_word/(byte*) char_cursor#2 print_word::@1/(byte*) char_cursor#11 ) [ print_byte::b#3 char_cursor#45 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 ] ) - [31] (byte) print_byte::b#3 ← phi( main::@1/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#3 char_cursor#45 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 ] ) - [32] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#45 print_byte::$0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] ) - [33] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#45 print_char::ch#0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] ) - [34] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] ) + [58] (byte*) char_cursor#69 ← phi( main::@1/(byte*~) char_cursor#77 print_word/(byte*) char_cursor#2 print_word::@1/(byte*) char_cursor#11 ) [ print_byte::b#3 char_cursor#69 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 ] ) + [58] (byte) print_byte::b#3 ← phi( main::@1/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#3 char_cursor#69 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 ] ) + [59] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] ) + [60] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] ) + [61] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [35] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] ) - [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] ) - [37] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [62] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] ) + [63] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] ) + [64] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [38] return [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [65] return [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) to:@return print_char: scope:[print_char] from print_byte print_byte::@1 - [39] (byte*) char_cursor#32 ← phi( print_byte/(byte*) char_cursor#45 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 print_char::ch#2 char_cursor#32 ] ) - [39] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 print_char::ch#2 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 print_char::ch#2 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 print_char::ch#2 char_cursor#32 ] ) - [40] *((byte*) char_cursor#32) ← (byte) print_char::ch#2 [ char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] ) - [41] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#32 [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [66] (byte*) char_cursor#44 ← phi( print_byte/(byte*) char_cursor#69 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 print_char::ch#2 char_cursor#44 ] ) + [66] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 print_char::ch#2 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 print_char::ch#2 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ print_char::ch#2 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ print_char::ch#2 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 print_char::ch#2 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 print_char::ch#2 char_cursor#44 ] ) + [67] *((byte*) char_cursor#44) ← (byte) print_char::ch#2 [ char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] ) + [68] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#44 [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) to:print_char::@return print_char::@return: scope:[print_char] from print_char - [42] return [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + [69] return [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) to:@return -print_str: scope:[print_str] from main::@5 - [43] phi() [ char_cursor#11 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#11 ] ) +print_str: scope:[print_str] from main::@11 main::@13 main::@18 main::@2 main::@5 main::@7 + [70] (byte*) char_cursor#74 ← phi( main::@11/(byte*) char_cursor#11 main::@13/(byte*) char_cursor#11 main::@18/(byte*) char_cursor#11 main::@2/(byte*~) char_cursor#85 main::@5/(const byte*) SCREEN#0 main::@7/(byte*) char_cursor#11 ) [ print_str::str#9 char_cursor#74 ] ( main:2::print_str:11 [ print_str::str#9 char_cursor#74 ] main:2::print_str:15 [ print_str::str#9 char_cursor#74 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:37 [ line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:41 [ line_cursor#1 print_str::str#9 char_cursor#74 ] ) + [70] (byte*) print_str::str#9 ← phi( main::@11/(const string) main::str2 main::@13/(const string) main::str3 main::@18/(const string) main::str5 main::@2/(const string) main::str4 main::@5/(const string) main::str main::@7/(const string) main::str1 ) [ print_str::str#9 char_cursor#74 ] ( main:2::print_str:11 [ print_str::str#9 char_cursor#74 ] main:2::print_str:15 [ print_str::str#9 char_cursor#74 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:37 [ line_cursor#1 print_str::str#9 char_cursor#74 ] main:2::print_str:41 [ line_cursor#1 print_str::str#9 char_cursor#74 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [44] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#11 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) - [44] (byte*) print_str::str#2 ← phi( print_str/(const string) main::str print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) - [45] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) + [71] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#74 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) + [71] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) + [72] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [46] return [ char_cursor#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 ] ) + [73] return [ char_cursor#2 ] ( main:2::print_str:11 [ char_cursor#2 ] main:2::print_str:15 [ char_cursor#2 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 ] ) to:@return print_str::@2: scope:[print_str] from print_str::@1 - [47] *((byte*) char_cursor#2) ← *((byte*) print_str::str#2) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) - [48] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#2 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#2 char_cursor#1 ] ) - [49] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#0 char_cursor#1 ] ) + [74] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) + [75] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#7 char_cursor#1 ] main:2::print_str:15 [ print_str::str#7 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#7 char_cursor#1 ] ) + [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#0 char_cursor#1 ] main:2::print_str:15 [ print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#0 char_cursor#1 ] ) to:print_str::@1 -print_cls: scope:[print_cls] from main::@3 - [50] phi() [ ] ( main:2::print_cls:7 [ ] ) +print_cls: scope:[print_cls] from main::@4 + [77] phi() [ ] ( main:2::print_cls:9 [ ] ) to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [51] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) - [52] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) - [53] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) - [54] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) + [78] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) + [79] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) + [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) + [81] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [55] return [ ] ( main:2::print_cls:7 [ ] ) + [82] return [ ] ( main:2::print_cls:9 [ ] ) to:@return -lin16u_gen: scope:[lin16u_gen] from main - [56] phi() [ ] ( main:2::lin16u_gen:5 [ ] ) - [57] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 rem16u#1 ] ) - [58] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#2 rem16u#1 ] ) +lin16u_gen: scope:[lin16u_gen] from main main::@3 + [83] (word*) lin16u_gen::lintab#4 ← phi( main/(const word[20]) main::lintab1#0 main::@3/(const word[20]) main::lintab2#0 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [83] (word) rem16u#20 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(word) divr16u::rem#11 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [83] (word) lin16u_gen::length#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 20 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 20 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [83] (word) lin16u_gen::min#2 ← phi( main/(word/signed word/dword/signed dword) 557 main::@3/(word/signed word/dword/signed dword) 31179 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [83] (word) lin16u_gen::max#2 ← phi( main/(word/signed word/dword/signed dword) 29793 main::@3/(word/dword/signed dword) 63361 ) [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] main:2::lin16u_gen:7 [ lin16u_gen::max#2 lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 ] ) + [84] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#2 - (word) lin16u_gen::min#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] ) + [85] (word) divr16u::divisor#0 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] ) + [86] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] ) + [87] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ) + [88] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ) to:lin16u_gen::@3 lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen - [59] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#1 ] ) - [60] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ) - [61] call divr16u param-assignment [ divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 lin16u_gen::stepi#0 ] ) - [62] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] ) + [89] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ) + [90] (word) divr16u::divisor#1 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] ) + [91] (word) divr16u::rem#4 ← (word) divr16u::rem#11 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ) + [92] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ) + [93] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ) to:lin16u_gen::@4 lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3 - [63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) - [64] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 ] ) + [94] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) + [95] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ) + [96] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#2 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ) to:lin16u_gen::@1 lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@1 lin16u_gen::@4 - [65] (word) lin16u_gen::i#2 ← phi( lin16u_gen::@1/(word) lin16u_gen::i#1 lin16u_gen::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) - [65] (word*) lin16u_gen::lintab#2 ← phi( lin16u_gen::@1/(word*) lin16u_gen::lintab#1 lin16u_gen::@4/(const word[20]) main::lintab#0 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) - [65] (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@1/(dword) lin16u_gen::val#1 lin16u_gen::@4/(const word) lin16u_gen::min#0*(dword/signed dword) 65536+(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) - [66] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ) - [67] *((word*) lin16u_gen::lintab#2) ← (word~) lin16u_gen::$5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) - [68] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ) - [69] (word*) lin16u_gen::lintab#1 ← (word*) lin16u_gen::lintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ) - [70] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) - [71] if((word) lin16u_gen::i#1<(const word) lin16u_gen::length#0) goto lin16u_gen::@1 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) + [97] (word) lin16u_gen::i#2 ← phi( lin16u_gen::@1/(word) lin16u_gen::i#1 lin16u_gen::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) + [97] (word*) lin16u_gen::lintab#3 ← phi( lin16u_gen::@1/(word*) lin16u_gen::lintab#2 lin16u_gen::@4/(word*) lin16u_gen::lintab#4 ) [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) + [97] (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@1/(dword) lin16u_gen::val#1 lin16u_gen::@4/(dword) lin16u_gen::val#0 ) [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) + [98] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ) + [99] *((word*) lin16u_gen::lintab#3) ← (word~) lin16u_gen::$5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) + [100] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ) + [101] (word*) lin16u_gen::lintab#2 ← (word*) lin16u_gen::lintab#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ) + [102] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) + [103] if((word) lin16u_gen::i#1<(word) lin16u_gen::length#2) goto lin16u_gen::@1 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) to:lin16u_gen::@return lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1 - [72] return [ ] ( main:2::lin16u_gen:5 [ ] ) + [104] return [ divr16u::rem#11 ] ( main:2::lin16u_gen:5 [ divr16u::rem#11 ] main:2::lin16u_gen:7 [ divr16u::rem#11 ] ) to:@return divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3 - [73] (word) divr16u::divisor#6 ← phi( lin16u_gen/(const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 lin16u_gen::@3/(const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) - [73] (word) divr16u::dividend#5 ← phi( lin16u_gen/(const word) lin16u_gen::ampl#0 lin16u_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) - [73] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [105] (word) divr16u::divisor#6 ← phi( lin16u_gen/(word) divr16u::divisor#0 lin16u_gen::@3/(word) divr16u::divisor#1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [105] (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [105] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [74] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) - [74] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) - [74] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) - [74] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) - [75] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) - [76] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) - [77] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) - [78] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) + [106] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) + [106] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) + [106] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) + [106] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) + [107] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) + [108] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) + [109] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) + [110] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [79] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) + [111] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [80] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ) - [81] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) - [82] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) - [83] 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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) + [112] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ) + [113] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) + [114] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) + [115] 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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [84] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) - [85] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) + [116] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) + [117] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [86] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) - [86] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) - [87] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) - [88] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) - to:divr16u::@6 -divr16u::@6: scope:[divr16u] from divr16u::@3 - [89] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) + [118] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ) + [118] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ) + [119] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) + [120] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) to:divr16u::@return -divr16u::@return: scope:[divr16u] from divr16u::@6 - [90] return [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) +divr16u::@return: scope:[divr16u] from divr16u::@3 + [121] return [ divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] ) to:@return DOMINATORS @@ -2874,59 +3408,70 @@ DOMINATORS @end dominated by @end @begin @18 main dominated by main @begin @18 main::@3 dominated by main main::@3 @begin @18 -main::@1 dominated by main main::@1 main::@3 @begin @18 -main::@5 dominated by main main::@1 main::@5 main::@3 @begin @18 -main::@6 dominated by main main::@1 main::@5 main::@6 main::@3 @begin @18 -main::@7 dominated by main::@7 main main::@1 main::@5 main::@6 main::@3 @begin @18 -main::@8 dominated by main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 @begin @18 -main::@return dominated by main::@return main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 @begin @18 -main::@9 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 @begin @18 -print_ln dominated by main::@7 main main::@1 main::@5 main::@6 main::@3 @begin @18 print_ln -print_ln::@1 dominated by print_ln::@1 main::@7 main main::@1 main::@5 main::@6 main::@3 @begin @18 print_ln -print_ln::@return dominated by print_ln::@1 main::@7 main print_ln::@return main::@1 main::@5 main::@6 main::@3 @begin @18 print_ln -print_word dominated by main print_word main::@1 main::@5 main::@6 main::@3 @begin @18 -print_word::@1 dominated by main print_word main::@1 main::@5 main::@6 main::@3 print_word::@1 @begin @18 -print_word::@return dominated by main print_word main::@1 main::@5 main::@6 main::@3 print_word::@1 @begin @18 print_word::@return -print_byte dominated by main main::@1 main::@3 @begin print_byte @18 -print_byte::@1 dominated by main main::@1 print_byte::@1 main::@3 @begin print_byte @18 -print_byte::@return dominated by main main::@1 print_byte::@1 main::@3 @begin print_byte @18 print_byte::@return -print_char dominated by main print_char main::@1 main::@3 @begin print_byte @18 -print_char::@return dominated by main print_char main::@1 main::@3 print_char::@return @begin print_byte @18 -print_str dominated by main main::@1 main::@5 main::@3 @begin @18 print_str -print_str::@1 dominated by main print_str::@1 main::@1 main::@5 main::@3 @begin @18 print_str -print_str::@return dominated by print_str::@return main print_str::@1 main::@1 main::@5 main::@3 @begin @18 print_str -print_str::@2 dominated by main print_str::@1 print_str::@2 main::@1 main::@5 main::@3 @begin @18 print_str -print_cls dominated by main main::@3 @begin @18 print_cls -print_cls::@1 dominated by main main::@3 @begin @18 print_cls::@1 print_cls -print_cls::@return dominated by main print_cls::@return main::@3 @begin @18 print_cls::@1 print_cls +main::@4 dominated by main main::@3 main::@4 @begin @18 +main::@5 dominated by main main::@5 main::@3 main::@4 @begin @18 +main::@6 dominated by main main::@5 main::@6 main::@3 main::@4 @begin @18 +main::@7 dominated by main::@7 main main::@5 main::@6 main::@3 main::@4 @begin @18 +main::@8 dominated by main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin @18 +main::@9 dominated by main::@9 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin @18 +main::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin @18 +main::@11 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 +main::@12 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@12 +main::@13 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@13 main::@12 +main::@14 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@13 main::@12 main::@14 +main::@15 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@13 main::@12 main::@15 main::@14 +main::@16 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@16 main::@13 main::@12 main::@15 main::@14 +main::@2 dominated by main::@9 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@16 main::@13 main::@12 main::@15 main::@14 +main::@17 dominated by main::@9 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14 +main::@18 dominated by main::@9 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@17 main::@16 main::@18 main::@13 main::@12 main::@15 main::@14 +main::@19 dominated by main::@9 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@11 @18 main::@17 main::@16 main::@19 main::@18 main::@13 main::@12 main::@15 main::@14 +main::@20 dominated by main::@9 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@11 @18 main::@17 main::@16 main::@19 main::@18 main::@13 main::@12 main::@15 main::@14 +main::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@return main::@11 @18 main::@17 main::@16 main::@19 main::@18 main::@13 main::@12 main::@15 main::@14 +print_ln dominated by main::@9 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin print_ln @18 +print_ln::@1 dominated by main::@9 print_ln::@1 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin print_ln @18 +print_ln::@return dominated by main::@9 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@5 main::@6 main::@3 main::@4 @begin print_ln @18 +print_word dominated by main print_word main::@5 main::@6 main::@3 main::@4 @begin @18 +print_word::@1 dominated by main print_word main::@5 main::@6 main::@3 main::@4 @begin print_word::@1 @18 +print_word::@return dominated by main print_word main::@5 main::@6 main::@3 main::@4 @begin print_word::@return print_word::@1 @18 +print_byte dominated by main main::@5 main::@6 main::@3 main::@4 @begin print_byte @18 +print_byte::@1 dominated by main main::@5 main::@6 main::@3 main::@4 @begin print_byte::@1 print_byte @18 +print_byte::@return dominated by main main::@5 main::@6 main::@3 main::@4 @begin print_byte::@return print_byte::@1 print_byte @18 +print_char dominated by main print_char main::@5 main::@6 main::@3 main::@4 @begin print_byte @18 +print_char::@return dominated by main print_char main::@5 main::@6 main::@3 main::@4 print_char::@return @begin print_byte @18 +print_str dominated by main main::@5 main::@3 main::@4 @begin @18 print_str +print_str::@1 dominated by main main::@5 main::@3 main::@4 @begin print_str::@1 @18 print_str +print_str::@return dominated by main main::@5 main::@3 main::@4 @begin print_str::@return print_str::@1 @18 print_str +print_str::@2 dominated by main main::@5 main::@3 main::@4 @begin print_str::@1 print_str::@2 @18 print_str +print_cls dominated by main main::@3 main::@4 @begin @18 print_cls +print_cls::@1 dominated by main main::@3 main::@4 @begin @18 print_cls::@1 print_cls +print_cls::@return dominated by main main::@3 main::@4 @begin print_cls::@return @18 print_cls::@1 print_cls lin16u_gen dominated by main @begin @18 lin16u_gen -lin16u_gen::@3 dominated by main lin16u_gen::@3 @begin @18 lin16u_gen -lin16u_gen::@4 dominated by main lin16u_gen::@3 @begin lin16u_gen::@4 @18 lin16u_gen -lin16u_gen::@1 dominated by main lin16u_gen::@3 @begin lin16u_gen::@1 lin16u_gen::@4 @18 lin16u_gen -lin16u_gen::@return dominated by main lin16u_gen::@3 @begin lin16u_gen::@1 lin16u_gen::@4 @18 lin16u_gen::@return lin16u_gen +lin16u_gen::@3 dominated by main @begin lin16u_gen::@3 @18 lin16u_gen +lin16u_gen::@4 dominated by main @begin lin16u_gen::@3 lin16u_gen::@4 @18 lin16u_gen +lin16u_gen::@1 dominated by main @begin lin16u_gen::@3 lin16u_gen::@1 lin16u_gen::@4 @18 lin16u_gen +lin16u_gen::@return dominated by main @begin lin16u_gen::@3 lin16u_gen::@1 lin16u_gen::@4 @18 lin16u_gen::@return lin16u_gen divr16u dominated by divr16u main @begin @18 lin16u_gen divr16u::@1 dominated by divr16u divr16u::@1 main @begin @18 lin16u_gen divr16u::@4 dominated by divr16u divr16u::@1 main divr16u::@4 @begin @18 lin16u_gen divr16u::@2 dominated by divr16u divr16u::@2 divr16u::@1 main @begin @18 lin16u_gen divr16u::@5 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@5 @begin @18 lin16u_gen divr16u::@3 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 @begin @18 lin16u_gen -divr16u::@6 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin @18 lin16u_gen -divr16u::@return dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin @18 lin16u_gen divr16u::@return +divr16u::@return dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 @begin @18 lin16u_gen divr16u::@return NATURAL LOOPS -Found back edge: Loop head: main::@1 tails: main::@9 blocks: null +Found back edge: Loop head: main::@1 tails: main::@16 blocks: null Found back edge: Loop head: print_ln::@1 tails: print_ln::@1 blocks: null Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null Found back edge: Loop head: lin16u_gen::@1 tails: lin16u_gen::@1 blocks: null Found back edge: Loop head: divr16u::@1 tails: divr16u::@3 blocks: null -Populated: Loop head: main::@1 tails: main::@9 blocks: main::@9 main::@8 main::@7 main::@6 main::@5 main::@1 +Populated: Loop head: main::@1 tails: main::@16 blocks: main::@16 main::@15 main::@14 main::@13 main::@12 main::@11 main::@1 Populated: Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 Populated: Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 Populated: Loop head: lin16u_gen::@1 tails: lin16u_gen::@1 blocks: lin16u_gen::@1 Populated: Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 -Loop head: main::@1 tails: main::@9 blocks: main::@9 main::@8 main::@7 main::@6 main::@5 main::@1 +Loop head: main::@1 tails: main::@16 blocks: main::@16 main::@15 main::@14 main::@13 main::@12 main::@11 main::@1 Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 @@ -2936,21 +3481,21 @@ Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16 NATURAL LOOPS WITH DEPTH Found 0 loops in scope [] Found 1 loops in scope [main] - Loop head: main::@1 tails: main::@9 blocks: main::@9 main::@8 main::@7 main::@6 main::@5 main::@1 + Loop head: main::@1 tails: main::@16 blocks: main::@16 main::@15 main::@14 main::@13 main::@12 main::@11 main::@1 Found 1 loops in scope [lin16u_gen] Loop head: lin16u_gen::@1 tails: lin16u_gen::@1 blocks: lin16u_gen::@1 Found 1 loops in scope [print_cls] Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 -Found 0 loops in scope [print_byte] Found 1 loops in scope [print_str] Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 Found 0 loops in scope [print_word] Found 1 loops in scope [print_ln] Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 +Found 0 loops in scope [print_byte] Found 1 loops in scope [divr16u] Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 Found 0 loops in scope [print_char] -Loop head: main::@1 tails: main::@9 blocks: main::@9 main::@8 main::@7 main::@6 main::@5 main::@1 depth: 1 +Loop head: main::@1 tails: main::@16 blocks: main::@16 main::@15 main::@14 main::@13 main::@12 main::@11 main::@1 depth: 1 Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 depth: 2 Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 depth: 2 Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 @@ -2962,21 +3507,25 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN (byte*) char_cursor (byte*) char_cursor#1 101.0 -(byte*) char_cursor#11 5.449999999999998 -(byte*) char_cursor#2 43.85714285714286 -(byte*) char_cursor#32 4.0 -(byte*) char_cursor#45 5.666666666666667 -(byte*) char_cursor#47 11.0 -(byte*~) char_cursor#51 22.0 +(byte*) char_cursor#11 4.586206896551724 +(byte*) char_cursor#2 17.055555555555554 +(byte*) char_cursor#44 4.0 +(byte*) char_cursor#69 5.666666666666667 +(byte*) char_cursor#74 30.0 +(byte*~) char_cursor#77 22.0 +(byte*~) char_cursor#85 4.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) (byte~) divr16u::$1 22.0 (byte~) divr16u::$2 22.0 (word) divr16u::dividend (word) divr16u::dividend#0 2.75 +(word) divr16u::dividend#1 4.0 (word) divr16u::dividend#3 5.0 -(word) divr16u::dividend#5 2.0 +(word) divr16u::dividend#5 4.0 (word) divr16u::divisor -(word) divr16u::divisor#6 1.375 +(word) divr16u::divisor#0 2.0 +(word) divr16u::divisor#1 2.0 +(word) divr16u::divisor#6 1.625 (byte) divr16u::i (byte) divr16u::i#1 16.5 (byte) divr16u::i#2 1.6923076923076923 @@ -2988,52 +3537,59 @@ VARIABLE REGISTER WEIGHTS (word) divr16u::rem#0 8.25 (word) divr16u::rem#1 22.0 (word) divr16u::rem#10 4.0 -(word) divr16u::rem#11 11.666666666666666 +(word) divr16u::rem#11 1.608695652173913 (word) divr16u::rem#2 22.0 (word) divr16u::rem#4 4.0 (word) divr16u::rem#5 24.0 (word) divr16u::rem#6 11.0 (word) divr16u::return -(word) divr16u::return#0 5.285714285714286 +(word) divr16u::return#0 6.166666666666666 (word) divr16u::return#2 4.0 (word) divr16u::return#3 4.0 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) (word~) lin16u_gen::$5 22.0 (word) lin16u_gen::ampl +(word) lin16u_gen::ampl#0 2.0 (word) lin16u_gen::i (word) lin16u_gen::i#1 16.5 (word) lin16u_gen::i#2 4.4 (word) lin16u_gen::length +(word) lin16u_gen::length#2 0.7142857142857143 (word*) lin16u_gen::lintab -(word*) lin16u_gen::lintab#1 7.333333333333333 -(word*) lin16u_gen::lintab#2 8.25 +(word*) lin16u_gen::lintab#2 7.333333333333333 +(word*) lin16u_gen::lintab#3 8.75 +(word*) lin16u_gen::lintab#4 0.14285714285714285 (word) lin16u_gen::max +(word) lin16u_gen::max#2 2.0 (word) lin16u_gen::min +(word) lin16u_gen::min#2 0.3076923076923077 (dword) lin16u_gen::step -(dword) lin16u_gen::step#0 1.625 +(dword) lin16u_gen::step#0 1.4444444444444446 (word) lin16u_gen::stepf (word) lin16u_gen::stepf#0 4.0 (word) lin16u_gen::stepi -(word) lin16u_gen::stepi#0 0.8 +(word) lin16u_gen::stepi#0 0.6666666666666666 (dword) lin16u_gen::val +(dword) lin16u_gen::val#0 4.0 (dword) lin16u_gen::val#1 5.5 -(dword) lin16u_gen::val#2 11.0 +(dword) lin16u_gen::val#2 11.666666666666666 (byte*) line_cursor -(byte*) line_cursor#1 46.42857142857143 -(byte*) line_cursor#19 1.4444444444444446 -(byte*) line_cursor#9 204.0 +(byte*) line_cursor#1 11.344827586206897 +(byte*) line_cursor#11 204.0 +(byte*) line_cursor#21 15.0 (void()) main() (byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#2 4.888888888888889 -(word[20]) main::lintab +(byte) main::i#1 16.5 +(byte) main::i#2 3.9285714285714284 +(word[20]) main::lintab1 +(word[20]) main::lintab2 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 4.0 (byte~) print_byte::$2 4.0 (byte) print_byte::b (byte) print_byte::b#0 4.0 (byte) print_byte::b#1 4.0 -(byte) print_byte::b#2 22.0 +(byte) print_byte::b#2 11.0 (byte) print_byte::b#3 4.75 (byte[]) print_byte::hextab (void()) print_char((byte) print_char::ch) @@ -3049,32 +3605,39 @@ VARIABLE REGISTER WEIGHTS (void()) print_str((byte*) print_str::str) (byte*) print_str::str (byte*) print_str::str#0 202.0 -(byte*) print_str::str#2 101.0 +(byte*) print_str::str#7 101.5 +(byte*) print_str::str#9 2.0 (void()) print_word((word) print_word::w) (word) print_word::w -(word) print_word::w#0 5.0 +(word) print_word::w#2 22.0 +(word) print_word::w#3 22.0 +(word) print_word::w#6 8.666666666666666 (word) rem16u -(word) rem16u#1 0.8 +(word) rem16u#20 20.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] -[ line_cursor#9 line_cursor#19 line_cursor#1 ] +[ line_cursor#11 line_cursor#21 line_cursor#1 ] +[ print_word::w#6 print_word::w#2 print_word::w#3 ] [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 ] -[ print_str::str#2 print_str::str#0 ] +[ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 ] +[ print_str::str#7 print_str::str#9 print_str::str#0 ] [ print_cls::sc#2 print_cls::sc#1 ] -[ lin16u_gen::val#2 lin16u_gen::val#1 ] -[ lin16u_gen::lintab#2 lin16u_gen::lintab#1 ] +[ lin16u_gen::max#2 ] +[ lin16u_gen::min#2 ] +[ lin16u_gen::length#2 ] +[ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] +[ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] [ lin16u_gen::i#2 lin16u_gen::i#1 ] -[ divr16u::divisor#6 ] -[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] -[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] +[ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] +[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] [ divr16u::i#2 divr16u::i#1 ] -Added variable print_word::w#0 to zero page equivalence class [ print_word::w#0 ] Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] +Added variable lin16u_gen::ampl#0 to zero page equivalence class [ lin16u_gen::ampl#0 ] Added variable divr16u::return#2 to zero page equivalence class [ divr16u::return#2 ] Added variable lin16u_gen::stepi#0 to zero page equivalence class [ lin16u_gen::stepi#0 ] Added variable divr16u::return#3 to zero page equivalence class [ divr16u::return#3 ] @@ -3083,26 +3646,29 @@ Added variable lin16u_gen::step#0 to zero page equivalence class [ lin16u_gen::s Added variable lin16u_gen::$5 to zero page equivalence class [ lin16u_gen::$5 ] Added variable divr16u::$1 to zero page equivalence class [ divr16u::$1 ] Added variable divr16u::$2 to zero page equivalence class [ divr16u::$2 ] -Added variable rem16u#1 to zero page equivalence class [ rem16u#1 ] Complete equivalence classes [ main::i#2 main::i#1 ] -[ line_cursor#9 line_cursor#19 line_cursor#1 ] +[ line_cursor#11 line_cursor#21 line_cursor#1 ] +[ print_word::w#6 print_word::w#2 print_word::w#3 ] [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 ] -[ print_str::str#2 print_str::str#0 ] +[ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 ] +[ print_str::str#7 print_str::str#9 print_str::str#0 ] [ print_cls::sc#2 print_cls::sc#1 ] -[ lin16u_gen::val#2 lin16u_gen::val#1 ] -[ lin16u_gen::lintab#2 lin16u_gen::lintab#1 ] +[ lin16u_gen::max#2 ] +[ lin16u_gen::min#2 ] +[ lin16u_gen::length#2 ] +[ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] +[ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] [ lin16u_gen::i#2 lin16u_gen::i#1 ] -[ divr16u::divisor#6 ] -[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] -[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] +[ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] +[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] [ divr16u::i#2 divr16u::i#1 ] -[ print_word::w#0 ] [ print_byte::$0 ] [ print_byte::$2 ] +[ lin16u_gen::ampl#0 ] [ divr16u::return#2 ] [ lin16u_gen::stepi#0 ] [ divr16u::return#3 ] @@ -3111,34 +3677,36 @@ Complete equivalence classes [ lin16u_gen::$5 ] [ divr16u::$1 ] [ divr16u::$2 ] -[ rem16u#1 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Allocated zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 ] -Allocated zp ZP_BYTE:5 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Allocated zp ZP_WORD:7 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 ] -Allocated zp ZP_WORD:9 [ print_str::str#2 print_str::str#0 ] -Allocated zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated zp ZP_DWORD:13 [ lin16u_gen::val#2 lin16u_gen::val#1 ] -Allocated zp ZP_WORD:17 [ lin16u_gen::lintab#2 lin16u_gen::lintab#1 ] -Allocated zp ZP_WORD:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] -Allocated zp ZP_WORD:21 [ divr16u::divisor#6 ] -Allocated zp ZP_WORD:23 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] -Allocated zp ZP_WORD:25 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] -Allocated zp ZP_WORD:27 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] -Allocated zp ZP_BYTE:29 [ divr16u::i#2 divr16u::i#1 ] -Allocated zp ZP_WORD:30 [ print_word::w#0 ] -Allocated zp ZP_BYTE:32 [ print_byte::$0 ] -Allocated zp ZP_BYTE:33 [ print_byte::$2 ] -Allocated zp ZP_WORD:34 [ divr16u::return#2 ] -Allocated zp ZP_WORD:36 [ lin16u_gen::stepi#0 ] -Allocated zp ZP_WORD:38 [ divr16u::return#3 ] -Allocated zp ZP_WORD:40 [ lin16u_gen::stepf#0 ] -Allocated zp ZP_DWORD:42 [ lin16u_gen::step#0 ] -Allocated zp ZP_WORD:46 [ lin16u_gen::$5 ] -Allocated zp ZP_BYTE:48 [ divr16u::$1 ] -Allocated zp ZP_BYTE:49 [ divr16u::$2 ] -Allocated zp ZP_WORD:50 [ rem16u#1 ] +Allocated zp ZP_WORD:3 [ line_cursor#11 line_cursor#21 line_cursor#1 ] +Allocated zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 ] +Allocated zp ZP_BYTE:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Allocated zp ZP_BYTE:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Allocated zp ZP_WORD:9 [ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 ] +Allocated zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Allocated zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] +Allocated zp ZP_WORD:15 [ lin16u_gen::max#2 ] +Allocated zp ZP_WORD:17 [ lin16u_gen::min#2 ] +Allocated zp ZP_WORD:19 [ lin16u_gen::length#2 ] +Allocated zp ZP_DWORD:21 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] +Allocated zp ZP_WORD:25 [ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] +Allocated zp ZP_WORD:27 [ lin16u_gen::i#2 lin16u_gen::i#1 ] +Allocated zp ZP_WORD:29 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] +Allocated zp ZP_WORD:31 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +Allocated zp ZP_WORD:33 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] +Allocated zp ZP_WORD:35 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] +Allocated zp ZP_BYTE:37 [ divr16u::i#2 divr16u::i#1 ] +Allocated zp ZP_BYTE:38 [ print_byte::$0 ] +Allocated zp ZP_BYTE:39 [ print_byte::$2 ] +Allocated zp ZP_WORD:40 [ lin16u_gen::ampl#0 ] +Allocated zp ZP_WORD:42 [ divr16u::return#2 ] +Allocated zp ZP_WORD:44 [ lin16u_gen::stepi#0 ] +Allocated zp ZP_WORD:46 [ divr16u::return#3 ] +Allocated zp ZP_WORD:48 [ lin16u_gen::stepf#0 ] +Allocated zp ZP_DWORD:50 [ lin16u_gen::step#0 ] +Allocated zp ZP_WORD:54 [ lin16u_gen::$5 ] +Allocated zp ZP_BYTE:56 [ divr16u::$1 ] +Allocated zp ZP_BYTE:57 [ divr16u::$2 ] INITIAL ASM //SEG0 Basic Upstart @@ -3147,9 +3715,9 @@ INITIAL ASM .pc = $80d "Program" //SEG1 Global Constants & labels .label SCREEN = $400 - .label rem16u = $32 - .label char_cursor = 7 + .label char_cursor = 9 .label line_cursor = 3 + .label rem16u = $1f //SEG2 @begin bbegin: //SEG3 [1] phi from @begin to @18 [phi:@begin->@18] @@ -3169,118 +3737,351 @@ bend: //SEG9 main main: { .label i = 2 - //SEG10 [5] call lin16u_gen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [56] phi from main to lin16u_gen [phi:main->lin16u_gen] + //SEG10 [5] call lin16u_gen param-assignment [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] ) + //SEG11 [83] phi from main to lin16u_gen [phi:main->lin16u_gen] lin16u_gen_from_main: + //SEG12 [83] phi (word*) lin16u_gen::lintab#4 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + lda #lintab1 + sta lin16u_gen.lintab+1 + //SEG13 [83] phi (word) rem16u#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->lin16u_gen#1] -- vwuz1=vbuc1 + lda #<0 + sta rem16u + lda #>0 + sta rem16u+1 + //SEG14 [83] phi (word) lin16u_gen::length#2 = (byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main->lin16u_gen#2] -- vwuz1=vbuc1 + lda #<$14 + sta lin16u_gen.length + lda #>$14 + sta lin16u_gen.length+1 + //SEG15 [83] phi (word) lin16u_gen::min#2 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#3] -- vwuz1=vwuc1 + lda #<$22d + sta lin16u_gen.min + lda #>$22d + sta lin16u_gen.min+1 + //SEG16 [83] phi (word) lin16u_gen::max#2 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#4] -- vwuz1=vwuc1 + lda #<$7461 + sta lin16u_gen.max + lda #>$7461 + sta lin16u_gen.max+1 jsr lin16u_gen - //SEG12 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG17 [6] phi from main to main::@3 [phi:main->main::@3] b3_from_main: jmp b3 - //SEG13 main::@3 + //SEG18 main::@3 b3: - //SEG14 [7] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG15 [50] phi from main::@3 to print_cls [phi:main::@3->print_cls] - print_cls_from_b3: + //SEG19 [7] call lin16u_gen param-assignment [ ] ( main:2 [ ] ) + //SEG20 [83] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] + lin16u_gen_from_b3: + //SEG21 [83] phi (word*) lin16u_gen::lintab#4 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 + lda #lintab2 + sta lin16u_gen.lintab+1 + //SEG22 [83] phi (word) rem16u#20 = (word) divr16u::rem#11 [phi:main::@3->lin16u_gen#1] -- register_copy + //SEG23 [83] phi (word) lin16u_gen::length#2 = (byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@3->lin16u_gen#2] -- vwuz1=vbuc1 + lda #<$14 + sta lin16u_gen.length + lda #>$14 + sta lin16u_gen.length+1 + //SEG24 [83] phi (word) lin16u_gen::min#2 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#3] -- vwuz1=vwuc1 + lda #<$79cb + sta lin16u_gen.min + lda #>$79cb + sta lin16u_gen.min+1 + //SEG25 [83] phi (word) lin16u_gen::max#2 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#4] -- vwuz1=vwuc1 + lda #<$f781 + sta lin16u_gen.max + lda #>$f781 + sta lin16u_gen.max+1 + jsr lin16u_gen + //SEG26 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + b4_from_b3: + jmp b4 + //SEG27 main::@4 + b4: + //SEG28 [9] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG29 [77] phi from main::@4 to print_cls [phi:main::@4->print_cls] + print_cls_from_b4: jsr print_cls - //SEG16 [8] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - b1_from_b3: - //SEG17 [8] phi (byte*) line_cursor#19 = (const byte*) SCREEN#0 [phi:main::@3->main::@1#0] -- pbuz1=pbuc1 + //SEG30 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + b5_from_b4: + jmp b5 + //SEG31 main::@5 + b5: + //SEG32 [11] call print_str param-assignment [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) + //SEG33 [70] phi from main::@5 to print_str [phi:main::@5->print_str] + print_str_from_b5: + //SEG34 [70] phi (byte*) char_cursor#74 = (const byte*) SCREEN#0 [phi:main::@5->print_str#0] -- pbuz1=pbuc1 + lda #SCREEN + sta char_cursor+1 + //SEG35 [70] phi (byte*) print_str::str#9 = (const string) main::str [phi:main::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG36 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + b6_from_b5: + jmp b6 + //SEG37 main::@6 + b6: + //SEG38 [13] call print_word param-assignment [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + //SEG39 [52] phi from main::@6 to print_word [phi:main::@6->print_word] + print_word_from_b6: + //SEG40 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 557 [phi:main::@6->print_word#0] -- vwuz1=vwuc1 + lda #<$22d + sta print_word.w + lda #>$22d + sta print_word.w+1 + jsr print_word + //SEG41 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + b7_from_b6: + jmp b7 + //SEG42 main::@7 + b7: + //SEG43 [15] call print_str param-assignment [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) + //SEG44 [70] phi from main::@7 to print_str [phi:main::@7->print_str] + print_str_from_b7: + //SEG45 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@7->print_str#0] -- register_copy + //SEG46 [70] phi (byte*) print_str::str#9 = (const string) main::str1 [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG47 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + b8_from_b7: + jmp b8 + //SEG48 main::@8 + b8: + //SEG49 [17] call print_word param-assignment [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + //SEG50 [52] phi from main::@8 to print_word [phi:main::@8->print_word] + print_word_from_b8: + //SEG51 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 31179 [phi:main::@8->print_word#0] -- vwuz1=vwuc1 + lda #<$79cb + sta print_word.w + lda #>$79cb + sta print_word.w+1 + jsr print_word + //SEG52 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + b9_from_b8: + jmp b9 + //SEG53 main::@9 + b9: + //SEG54 [19] call print_ln param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG55 [47] phi from main::@9 to print_ln [phi:main::@9->print_ln] + print_ln_from_b9: + //SEG56 [47] phi (byte*) line_cursor#21 = (const byte*) SCREEN#0 [phi:main::@9->print_ln#0] -- pbuz1=pbuc1 lda #SCREEN sta line_cursor+1 - //SEG18 [8] phi (byte*) char_cursor#47 = (const byte*) SCREEN#0 [phi:main::@3->main::@1#1] -- pbuz1=pbuc1 - lda #SCREEN - sta char_cursor+1 - //SEG19 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@1#2] -- vbuz1=vbuc1 + jsr print_ln + //SEG57 [20] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + b1_from_b9: + //SEG58 [20] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG20 main::@1 + //SEG59 [20] phi from main::@16 to main::@1 [phi:main::@16->main::@1] + b1_from_b16: + //SEG60 [20] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@16->main::@1#0] -- register_copy + jmp b1 + //SEG61 main::@1 b1: - //SEG21 [9] (byte) print_byte::b#2 ← (byte) main::i#2 [ main::i#2 char_cursor#47 line_cursor#19 print_byte::b#2 ] ( main:2 [ main::i#2 char_cursor#47 line_cursor#19 print_byte::b#2 ] ) -- vbuz1=vbuz2 + //SEG62 [21] (byte) print_byte::b#2 ← (byte) main::i#2 [ main::i#2 print_byte::b#2 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 line_cursor#1 ] ) -- vbuz1=vbuz2 lda i sta print_byte.b - //SEG22 [10] call print_byte param-assignment [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG23 [31] phi from main::@1 to print_byte [phi:main::@1->print_byte] - print_byte_from_b1: - //SEG24 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#47 [phi:main::@1->print_byte#0] -- register_copy - //SEG25 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy - jsr print_byte - //SEG26 [11] phi from main::@1 to main::@5 [phi:main::@1->main::@5] - b5_from_b1: - jmp b5 - //SEG27 main::@5 - b5: - //SEG28 [12] call print_str param-assignment [ main::i#2 line_cursor#19 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#2 ] ) - //SEG29 [43] phi from main::@5 to print_str [phi:main::@5->print_str] - print_str_from_b5: - jsr print_str - jmp b6 - //SEG30 main::@6 - b6: - //SEG31 [13] (word) print_word::w#0 ← *((const word[20]) main::lintab#0 + (byte) main::i#2) [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i - lda lintab,y - sta print_word.w - lda lintab+1,y - sta print_word.w+1 - //SEG32 [14] call print_word param-assignment [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - jsr print_word - //SEG33 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - b7_from_b6: - jmp b7 - //SEG34 main::@7 - b7: - //SEG35 [16] call print_ln param-assignment [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) - //SEG36 [21] phi from main::@7 to print_ln [phi:main::@7->print_ln] - print_ln_from_b7: - jsr print_ln - jmp b8 - //SEG37 main::@8 - b8: - //SEG38 [17] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 - lda #2 - clc - adc i - sta i - //SEG39 [18] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@9 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_lt_vbuc1_then_la1 - lda i - cmp #$14*2 - bcc b9 - jmp breturn - //SEG40 main::@return - breturn: - //SEG41 [19] return [ ] ( main:2 [ ] ) - rts - //SEG42 main::@9 - b9: - //SEG43 [20] (byte*~) char_cursor#51 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#51 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#51 line_cursor#1 ] ) -- pbuz1=pbuz2 + //SEG63 [22] (byte*~) char_cursor#77 ← (byte*) line_cursor#1 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ) -- pbuz1=pbuz2 lda line_cursor sta char_cursor lda line_cursor+1 sta char_cursor+1 - //SEG44 [8] phi from main::@9 to main::@1 [phi:main::@9->main::@1] - b1_from_b9: - //SEG45 [8] phi (byte*) line_cursor#19 = (byte*) line_cursor#1 [phi:main::@9->main::@1#0] -- register_copy - //SEG46 [8] phi (byte*) char_cursor#47 = (byte*~) char_cursor#51 [phi:main::@9->main::@1#1] -- register_copy - //SEG47 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#2] -- register_copy - jmp b1 - str: .text " @" - lintab: .fill $28, 0 + //SEG64 [23] call print_byte param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG65 [58] phi from main::@1 to print_byte [phi:main::@1->print_byte] + print_byte_from_b1: + //SEG66 [58] phi (byte*) char_cursor#69 = (byte*~) char_cursor#77 [phi:main::@1->print_byte#0] -- register_copy + //SEG67 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG68 [24] phi from main::@1 to main::@11 [phi:main::@1->main::@11] + b11_from_b1: + jmp b11 + //SEG69 main::@11 + b11: + //SEG70 [25] call print_str param-assignment [ main::i#2 line_cursor#1 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#2 ] ) + //SEG71 [70] phi from main::@11 to print_str [phi:main::@11->print_str] + print_str_from_b11: + //SEG72 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@11->print_str#0] -- register_copy + //SEG73 [70] phi (byte*) print_str::str#9 = (const string) main::str2 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + jmp b12 + //SEG74 main::@12 + b12: + //SEG75 [26] (word) print_word::w#2 ← *((const word[20]) main::lintab1#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy i + lda lintab1,y + sta print_word.w + lda lintab1+1,y + sta print_word.w+1 + //SEG76 [27] call print_word param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG77 [52] phi from main::@12 to print_word [phi:main::@12->print_word] + print_word_from_b12: + //SEG78 [52] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:main::@12->print_word#0] -- register_copy + jsr print_word + //SEG79 [28] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + b13_from_b12: + jmp b13 + //SEG80 main::@13 + b13: + //SEG81 [29] call print_str param-assignment [ main::i#2 line_cursor#1 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#2 ] ) + //SEG82 [70] phi from main::@13 to print_str [phi:main::@13->print_str] + print_str_from_b13: + //SEG83 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@13->print_str#0] -- register_copy + //SEG84 [70] phi (byte*) print_str::str#9 = (const string) main::str3 [phi:main::@13->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + jmp b14 + //SEG85 main::@14 + b14: + //SEG86 [30] (word) print_word::w#3 ← *((const word[20]) main::lintab2#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy i + lda lintab2,y + sta print_word.w + lda lintab2+1,y + sta print_word.w+1 + //SEG87 [31] call print_word param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG88 [52] phi from main::@14 to print_word [phi:main::@14->print_word] + print_word_from_b14: + //SEG89 [52] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:main::@14->print_word#0] -- register_copy + jsr print_word + //SEG90 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + b15_from_b14: + jmp b15 + //SEG91 main::@15 + b15: + //SEG92 [33] call print_ln param-assignment [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) + //SEG93 [47] phi from main::@15 to print_ln [phi:main::@15->print_ln] + print_ln_from_b15: + //SEG94 [47] phi (byte*) line_cursor#21 = (byte*) line_cursor#1 [phi:main::@15->print_ln#0] -- register_copy + jsr print_ln + jmp b16 + //SEG95 main::@16 + b16: + //SEG96 [34] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + lda #2 + clc + adc i + sta i + //SEG97 [35] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + lda i + cmp #$14*2 + bcc b1_from_b16 + jmp b2 + //SEG98 main::@2 + b2: + //SEG99 [36] (byte*~) char_cursor#85 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#85 ] ( main:2 [ line_cursor#1 char_cursor#85 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG100 [37] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + //SEG101 [70] phi from main::@2 to print_str [phi:main::@2->print_str] + print_str_from_b2: + //SEG102 [70] phi (byte*) char_cursor#74 = (byte*~) char_cursor#85 [phi:main::@2->print_str#0] -- register_copy + //SEG103 [70] phi (byte*) print_str::str#9 = (const string) main::str4 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + lda #str4 + sta print_str.str+1 + jsr print_str + //SEG104 [38] phi from main::@2 to main::@17 [phi:main::@2->main::@17] + b17_from_b2: + jmp b17 + //SEG105 main::@17 + b17: + //SEG106 [39] call print_word param-assignment [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + //SEG107 [52] phi from main::@17 to print_word [phi:main::@17->print_word] + print_word_from_b17: + //SEG108 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 29793 [phi:main::@17->print_word#0] -- vwuz1=vwuc1 + lda #<$7461 + sta print_word.w + lda #>$7461 + sta print_word.w+1 + jsr print_word + //SEG109 [40] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + b18_from_b17: + jmp b18 + //SEG110 main::@18 + b18: + //SEG111 [41] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + //SEG112 [70] phi from main::@18 to print_str [phi:main::@18->print_str] + print_str_from_b18: + //SEG113 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@18->print_str#0] -- register_copy + //SEG114 [70] phi (byte*) print_str::str#9 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + lda #str5 + sta print_str.str+1 + jsr print_str + //SEG115 [42] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + b19_from_b18: + jmp b19 + //SEG116 main::@19 + b19: + //SEG117 [43] call print_word param-assignment [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + //SEG118 [52] phi from main::@19 to print_word [phi:main::@19->print_word] + print_word_from_b19: + //SEG119 [52] phi (word) print_word::w#6 = (word/dword/signed dword) 63361 [phi:main::@19->print_word#0] -- vwuz1=vwuc1 + lda #<$f781 + sta print_word.w + lda #>$f781 + sta print_word.w+1 + jsr print_word + //SEG120 [44] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + b20_from_b19: + jmp b20 + //SEG121 main::@20 + b20: + //SEG122 [45] call print_ln param-assignment [ ] ( main:2 [ ] ) + //SEG123 [47] phi from main::@20 to print_ln [phi:main::@20->print_ln] + print_ln_from_b20: + //SEG124 [47] phi (byte*) line_cursor#21 = (byte*) line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy + jsr print_ln + jmp breturn + //SEG125 main::@return + breturn: + //SEG126 [46] return [ ] ( main:2 [ ] ) + rts + str: .text " @" + str1: .text " @" + str2: .text " @" + str3: .text " @" + str4: .text " @" + str5: .text " @" + lintab1: .fill $28, 0 + lintab2: .fill $28, 0 } -//SEG48 print_ln +//SEG127 print_ln print_ln: { - //SEG49 [22] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG128 [48] 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: - //SEG50 [22] phi (byte*) line_cursor#9 = (byte*) line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG129 [48] phi (byte*) line_cursor#11 = (byte*) line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG51 print_ln::@1 + //SEG130 print_ln::@1 b1: - //SEG52 [23] (byte*) line_cursor#1 ← (byte*) line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG131 [49] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -3288,7 +4089,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG53 [24] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG132 [50] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1_from_b1 @@ -3298,179 +4099,172 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG54 print_ln::@return + //SEG133 print_ln::@return breturn: - //SEG55 [25] return [ line_cursor#1 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 ] ) + //SEG134 [51] return [ line_cursor#1 ] ( main:2::print_ln:19 [ line_cursor#1 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 ] main:2::print_ln:45 [ line_cursor#1 ] ) rts } -//SEG56 print_word +//SEG135 print_word print_word: { - .label w = $1e - //SEG57 [26] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#0 char_cursor#2 ] ) -- vbuz1=_hi_vwuz2 + .label w = 5 + //SEG136 [53] (byte) print_byte::b#0 ← > (word) print_word::w#6 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] ) -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG58 [27] call print_byte param-assignment [ print_word::w#0 char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] ) - //SEG59 [31] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG137 [54] call print_byte param-assignment [ char_cursor#11 print_word::w#6 ] ( main:2::print_word:13 [ char_cursor#11 print_word::w#6 ] main:2::print_word:17 [ char_cursor#11 print_word::w#6 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_word::w#6 ] ) + //SEG138 [58] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG60 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG61 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG139 [58] phi (byte*) char_cursor#69 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG140 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG62 print_word::@1 + //SEG141 print_word::@1 b1: - //SEG63 [28] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#1 ] ) -- vbuz1=_lo_vwuz2 + //SEG142 [55] (byte) print_byte::b#1 ← < (word) print_word::w#6 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:13 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:17 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] ) -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG64 [29] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG65 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG143 [56] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) + //SEG144 [58] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG66 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG67 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG145 [58] phi (byte*) char_cursor#69 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG146 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG68 print_word::@return + //SEG147 print_word::@return breturn: - //SEG69 [30] return [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG148 [57] return [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) rts } -//SEG70 print_byte +//SEG149 print_byte print_byte: { - .label _0 = $20 - .label _2 = $21 - .label b = 5 - //SEG71 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#45 print_byte::$0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 + .label _0 = $26 + .label _2 = $27 + .label b = 7 + //SEG150 [59] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG72 [33] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#45 print_char::ch#0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG151 [60] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda hextab,y sta print_char.ch - //SEG73 [34] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] ) - //SEG74 [39] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG152 [61] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] ) + //SEG153 [66] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG75 [39] phi (byte*) char_cursor#32 = (byte*) char_cursor#45 [phi:print_byte->print_char#0] -- register_copy - //SEG76 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG154 [66] phi (byte*) char_cursor#44 = (byte*) char_cursor#69 [phi:print_byte->print_char#0] -- register_copy + //SEG155 [66] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG77 print_byte::@1 + //SEG156 print_byte::@1 b1: - //SEG78 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG157 [62] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG79 [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG158 [63] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda hextab,y sta print_char.ch - //SEG80 [37] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG81 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG159 [64] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) + //SEG160 [66] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG82 [39] phi (byte*) char_cursor#32 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG83 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG161 [66] phi (byte*) char_cursor#44 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG162 [66] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG84 print_byte::@return + //SEG163 print_byte::@return breturn: - //SEG85 [38] return [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG164 [65] return [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) rts hextab: .text "0123456789abcdef" } -//SEG86 print_char +//SEG165 print_char print_char: { - .label ch = 6 - //SEG87 [40] *((byte*) char_cursor#32) ← (byte) print_char::ch#2 [ char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] ) -- _deref_pbuz1=vbuz2 + .label ch = 8 + //SEG166 [67] *((byte*) char_cursor#44) ← (byte) print_char::ch#2 [ char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] ) -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (char_cursor),y - //SEG88 [41] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#32 [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + //SEG167 [68] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#44 [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: jmp breturn - //SEG89 print_char::@return + //SEG168 print_char::@return breturn: - //SEG90 [42] return [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG169 [69] return [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) rts } -//SEG91 print_str +//SEG170 print_str print_str: { - .label str = 9 - //SEG92 [44] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] + .label str = $b + //SEG171 [71] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: - //SEG93 [44] phi (byte*) char_cursor#2 = (byte*) char_cursor#11 [phi:print_str->print_str::@1#0] -- register_copy - //SEG94 [44] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 - lda #main.str - sta str+1 + b1_from_b2: + //SEG172 [71] phi (byte*) char_cursor#2 = (byte*) char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG173 [71] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG95 print_str::@1 + //SEG174 print_str::@1 b1: - //SEG96 [45] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG175 [72] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG97 print_str::@return + //SEG176 print_str::@return breturn: - //SEG98 [46] return [ char_cursor#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 ] ) + //SEG177 [73] return [ char_cursor#2 ] ( main:2::print_str:11 [ char_cursor#2 ] main:2::print_str:15 [ char_cursor#2 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 ] ) rts - //SEG99 print_str::@2 + //SEG178 print_str::@2 b2: - //SEG100 [47] *((byte*) char_cursor#2) ← *((byte*) print_str::str#2) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG179 [74] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (char_cursor),y - //SEG101 [48] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#2 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#2 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG180 [75] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#7 char_cursor#1 ] main:2::print_str:15 [ print_str::str#7 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG102 [49] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG181 [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#0 char_cursor#1 ] main:2::print_str:15 [ print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG103 [44] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] - b1_from_b2: - //SEG104 [44] phi (byte*) char_cursor#2 = (byte*) char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG105 [44] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy - jmp b1 + jmp b1_from_b2 } -//SEG106 print_cls +//SEG182 print_cls print_cls: { - .label sc = $b - //SEG107 [51] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + .label sc = $d + //SEG183 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG108 [51] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG184 [78] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG109 [51] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG185 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG110 [51] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG186 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG111 print_cls::@1 + //SEG187 print_cls::@1 b1: - //SEG112 [52] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG188 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG113 [53] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG189 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG114 [54] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG190 [81] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1_from_b1 @@ -3478,90 +4272,104 @@ print_cls: { cmp #divr16u] - divr16u_from_lin16u_gen: - //SEG120 [73] phi (word) divr16u::divisor#6 = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 - lda #length-1 + lda length+1 + sbc #0 sta divr16u.divisor+1 - //SEG121 [73] phi (word) divr16u::dividend#5 = (const word) lin16u_gen::ampl#0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vwuc1 - lda #ampl + lda ampl+1 sta divr16u.dividend+1 - //SEG122 [73] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 + //SEG197 [87] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ) + //SEG198 [105] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + divr16u_from_lin16u_gen: + //SEG199 [105] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:lin16u_gen->divr16u#0] -- register_copy + //SEG200 [105] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy + //SEG201 [105] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG123 [58] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#2 rem16u#1 ] ) -- vwuz1=vwuz2 + //SEG202 [88] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ) -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b3 - //SEG124 lin16u_gen::@3 + //SEG203 lin16u_gen::@3 b3: - //SEG125 [59] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#1 ] ) -- vwuz1=vwuz2 + //SEG204 [89] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ) -- vwuz1=vwuz2 lda divr16u.return_2 sta stepi lda divr16u.return_2+1 sta stepi+1 - //SEG126 [60] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ) -- vwuz1=vwuz2 - lda rem16u - sta divr16u.rem - lda rem16u+1 - sta divr16u.rem+1 - //SEG127 [61] call divr16u param-assignment [ divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 lin16u_gen::stepi#0 ] ) - //SEG128 [73] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] - divr16u_from_b3: - //SEG129 [73] phi (word) divr16u::divisor#6 = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 - lda #length-1 + lda length+1 + sbc #0 sta divr16u.divisor+1 - //SEG130 [73] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 + //SEG206 [91] (word) divr16u::rem#4 ← (word) divr16u::rem#11 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ) + // (word) divr16u::rem#4 = (word) divr16u::rem#11 // register copy zp ZP_WORD:31 + //SEG207 [92] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ) + //SEG208 [105] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + divr16u_from_b3: + //SEG209 [105] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:lin16u_gen::@3->divr16u#0] -- register_copy + //SEG210 [105] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.dividend lda #>0 sta divr16u.dividend+1 - //SEG131 [73] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy + //SEG211 [105] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy jsr divr16u - //SEG132 [62] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] ) -- vwuz1=vwuz2 + //SEG212 [93] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ) -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b4 - //SEG133 lin16u_gen::@4 + //SEG213 lin16u_gen::@4 b4: - //SEG134 [63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) -- vwuz1=vwuz2 + //SEG214 [94] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) -- vwuz1=vwuz2 lda divr16u.return_3 sta stepf lda divr16u.return_3+1 sta stepf+1 - //SEG135 [64] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 ] ) -- vduz1=vwuz2_dword_vwuz3 + //SEG215 [95] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ) -- vduz1=vwuz2_dword_vwuz3 lda stepi sta step+2 lda stepi+1 @@ -3570,49 +4378,46 @@ lin16u_gen: { sta step lda stepf+1 sta step+1 - //SEG136 [65] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + //SEG216 [96] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#2 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ) -- vduz1=vwuz2_dword_vbuc1 + lda #<0 + sta val + lda #>0 + sta val+1 + lda min + sta val+2 + lda min+1 + sta val+3 + //SEG217 [97] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] b1_from_b4: - //SEG137 [65] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 + //SEG218 [97] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG138 [65] phi (word*) lin16u_gen::lintab#2 = (const word[20]) main::lintab#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- pwuz1=pwuc1 - lda #main.lintab - sta lintab+1 - //SEG139 [65] phi (dword) lin16u_gen::val#2 = (const word) lin16u_gen::min#0*(dword/signed dword) 65536+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vduz1=vduc1 - lda #min*$10000+0 - sta val+1 - lda #>$10 - sta val+2 - lda #>min*$10000+0>>$10 - sta val+3 + //SEG219 [97] phi (word*) lin16u_gen::lintab#3 = (word*) lin16u_gen::lintab#4 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + //SEG220 [97] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy jmp b1 - //SEG140 [65] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] + //SEG221 [97] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] b1_from_b1: - //SEG141 [65] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy - //SEG142 [65] phi (word*) lin16u_gen::lintab#2 = (word*) lin16u_gen::lintab#1 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy - //SEG143 [65] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy + //SEG222 [97] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy + //SEG223 [97] phi (word*) lin16u_gen::lintab#3 = (word*) lin16u_gen::lintab#2 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy + //SEG224 [97] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy jmp b1 - //SEG144 lin16u_gen::@1 + //SEG225 lin16u_gen::@1 b1: - //SEG145 [66] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ) -- vwuz1=_hi_vduz2 + //SEG226 [98] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ) -- vwuz1=_hi_vduz2 lda val+2 sta _5 lda val+3 sta _5+1 - //SEG146 [67] *((word*) lin16u_gen::lintab#2) ← (word~) lin16u_gen::$5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) -- _deref_pwuz1=vwuz2 + //SEG227 [99] *((word*) lin16u_gen::lintab#3) ← (word~) lin16u_gen::$5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) -- _deref_pwuz1=vwuz2 ldy #0 lda _5 sta (lintab),y iny lda _5+1 sta (lintab),y - //SEG147 [68] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG228 [100] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ) -- vduz1=vduz1_plus_vduz2 lda val clc adc step @@ -3626,7 +4431,7 @@ lin16u_gen: { lda val+3 adc step+3 sta val+3 - //SEG148 [69] (word*) lin16u_gen::lintab#1 ← (word*) lin16u_gen::lintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ) -- pwuz1=pwuz1_plus_vbuc1 + //SEG229 [101] (word*) lin16u_gen::lintab#2 ← (word*) lin16u_gen::lintab#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ) -- pwuz1=pwuz1_plus_vbuc1 clc lda lintab adc #<2 @@ -3634,94 +4439,94 @@ lin16u_gen: { lda lintab+1 adc #>2 sta lintab+1 - //SEG149 [70] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + //SEG230 [102] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG150 [71] if((word) lin16u_gen::i#1<(const word) lin16u_gen::length#0) goto lin16u_gen::@1 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + //SEG231 [103] if((word) lin16u_gen::i#1<(word) lin16u_gen::length#2) goto lin16u_gen::@1 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) -- vwuz1_lt_vwuz2_then_la1 lda i+1 - cmp #>length + cmp length+1 bcc b1_from_b1 bne !+ lda i - cmp #divr16u::@1] + .label _1 = $38 + .label _2 = $39 + .label rem = $1f + .label dividend = $21 + .label quotient = $23 + .label i = $25 + .label return = $23 + .label divisor = $1d + .label return_2 = $2a + .label return_3 = $2e + //SEG235 [106] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG155 [74] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG236 [106] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG156 [74] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG237 [106] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG157 [74] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG158 [74] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG238 [106] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG239 [106] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG159 [74] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG240 [106] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG160 [74] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG161 [74] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG162 [74] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG163 [74] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG241 [106] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG242 [106] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG243 [106] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG244 [106] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG164 divr16u::@1 + //SEG245 divr16u::@1 b1: - //SEG165 [75] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 + //SEG246 [107] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG166 [76] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuz1=_hi_vwuz2 + //SEG247 [108] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG167 [77] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG248 [109] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG168 [78] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuz1_eq_0_then_la1 + //SEG249 [110] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuz1_eq_0_then_la1 lda _2 beq b2_from_b1 jmp b4 - //SEG169 divr16u::@4 + //SEG250 divr16u::@4 b4: - //SEG170 [79] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 + //SEG251 [111] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG171 [80] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG252 [112] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG172 [80] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG253 [112] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG173 divr16u::@2 + //SEG254 divr16u::@2 b2: - //SEG174 [81] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) -- vwuz1=vwuz1_rol_1 + //SEG255 [113] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG175 [82] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 + //SEG256 [114] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG176 [83] 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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 + //SEG257 [115] 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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -3731,14 +4536,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG177 divr16u::@5 + //SEG258 divr16u::@5 b5: - //SEG178 [84] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG259 [116] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG179 [85] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) -- vwuz1=vwuz1_minus_vwuz2 + //SEG260 [117] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -3746,170 +4551,180 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG180 [86] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG261 [118] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG181 [86] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG182 [86] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG262 [118] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG263 [118] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG183 divr16u::@3 + //SEG264 divr16u::@3 b3: - //SEG184 [87] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG265 [119] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG185 [88] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG266 [120] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b3 - jmp b6 - //SEG186 divr16u::@6 - b6: - //SEG187 [89] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) -- vwuz1=vwuz2 - lda rem - sta rem16u - lda rem+1 - sta rem16u+1 jmp breturn - //SEG188 divr16u::@return + //SEG267 divr16u::@return breturn: - //SEG189 [90] return [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) + //SEG268 [121] return [ divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] ) rts } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [13] (word) print_word::w#0 ← *((const word[20]) main::lintab#0 + (byte) main::i#2) [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ) always clobbers reg byte a +Statement [22] (byte*~) char_cursor#77 ← (byte*) line_cursor#1 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ) 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 ] -Statement [17] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) always clobbers reg byte a -Statement [20] (byte*~) char_cursor#51 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#51 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#51 line_cursor#1 ] ) always clobbers reg byte a -Statement [23] (byte*) line_cursor#1 ← (byte*) line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a -Statement [24] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#0 char_cursor#2 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [40] *((byte*) char_cursor#32) ← (byte) print_char::ch#2 [ char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] ) always clobbers reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [26] (word) print_word::w#2 ← *((const word[20]) main::lintab1#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ) always clobbers reg byte a +Statement [30] (word) print_word::w#3 ← *((const word[20]) main::lintab2#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ) always clobbers reg byte a +Statement [34] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) always clobbers reg byte a +Statement [36] (byte*~) char_cursor#85 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#85 ] ( main:2 [ line_cursor#1 char_cursor#85 ] ) always clobbers reg byte a +Statement [49] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a +Statement [50] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a +Statement [53] (byte) print_byte::b#0 ← > (word) print_word::w#6 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] ) always clobbers reg byte a +Statement [55] (byte) print_byte::b#1 ← < (word) print_word::w#6 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:13 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:17 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a +Statement [59] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] ) always clobbers reg byte a +Statement [62] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a +Statement [67] *((byte*) char_cursor#44) ← (byte) print_char::ch#2 [ char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] ) 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:5 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [45] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [47] *((byte*) char_cursor#2) ← *((byte*) print_str::str#2) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [52] *((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 [54] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [58] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [59] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [60] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [62] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) always clobbers reg byte a -Statement [64] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 ] ) always clobbers reg byte a -Statement [66] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ) always clobbers reg byte a -Statement [67] *((word*) lin16u_gen::lintab#2) ← (word~) lin16u_gen::$5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [68] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ) always clobbers reg byte a -Statement [69] (word*) lin16u_gen::lintab#1 ← (word*) lin16u_gen::lintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ) always clobbers reg byte a -Statement [71] if((word) lin16u_gen::i#1<(const word) lin16u_gen::length#0) goto lin16u_gen::@1 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) always clobbers reg byte a -Statement [76] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#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:29 [ divr16u::i#2 divr16u::i#1 ] -Statement [77] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [79] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [83] 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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [85] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [89] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [13] (word) print_word::w#0 ← *((const word[20]) main::lintab#0 + (byte) main::i#2) [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ) always clobbers reg byte a -Statement [17] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) always clobbers reg byte a -Statement [20] (byte*~) char_cursor#51 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#51 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#51 line_cursor#1 ] ) always clobbers reg byte a -Statement [23] (byte*) line_cursor#1 ← (byte*) line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a -Statement [24] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#0 char_cursor#2 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a -Statement [35] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a -Statement [40] *((byte*) char_cursor#32) ← (byte) print_char::ch#2 [ char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] ) always clobbers reg byte y -Statement [45] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [47] *((byte*) char_cursor#2) ← *((byte*) print_str::str#2) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y -Statement [52] *((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 [54] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [58] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [59] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [60] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [62] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) always clobbers reg byte a -Statement [64] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 ] ) always clobbers reg byte a -Statement [66] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ) always clobbers reg byte a -Statement [67] *((word*) lin16u_gen::lintab#2) ← (word~) lin16u_gen::$5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [68] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ) always clobbers reg byte a -Statement [69] (word*) lin16u_gen::lintab#1 ← (word*) lin16u_gen::lintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ) always clobbers reg byte a -Statement [71] if((word) lin16u_gen::i#1<(const word) lin16u_gen::length#0) goto lin16u_gen::@1 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) always clobbers reg byte a -Statement [76] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [77] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [79] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [83] 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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [85] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [89] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [72] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [74] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [79] *((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 [81] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [84] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#2 - (word) lin16u_gen::min#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] ) always clobbers reg byte a +Statement [85] (word) divr16u::divisor#0 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [86] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] ) always clobbers reg byte a +Statement [88] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ) always clobbers reg byte a +Statement [89] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ) always clobbers reg byte a +Statement [90] (word) divr16u::divisor#1 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] ) always clobbers reg byte a +Statement [93] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [94] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) always clobbers reg byte a +Statement [95] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ) always clobbers reg byte a +Statement [96] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#2 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ) always clobbers reg byte a +Statement [98] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ) always clobbers reg byte a +Statement [99] *((word*) lin16u_gen::lintab#3) ← (word~) lin16u_gen::$5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) always clobbers reg byte a reg byte y +Statement [100] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ) always clobbers reg byte a +Statement [101] (word*) lin16u_gen::lintab#2 ← (word*) lin16u_gen::lintab#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ) always clobbers reg byte a +Statement [103] if((word) lin16u_gen::i#1<(word) lin16u_gen::length#2) goto lin16u_gen::@1 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) always clobbers reg byte a +Statement [108] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#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:37 [ divr16u::i#2 divr16u::i#1 ] +Statement [109] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [111] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [115] 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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [117] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [22] (byte*~) char_cursor#77 ← (byte*) line_cursor#1 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ) always clobbers reg byte a +Statement [26] (word) print_word::w#2 ← *((const word[20]) main::lintab1#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ) always clobbers reg byte a +Statement [30] (word) print_word::w#3 ← *((const word[20]) main::lintab2#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ) always clobbers reg byte a +Statement [34] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) always clobbers reg byte a +Statement [36] (byte*~) char_cursor#85 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#85 ] ( main:2 [ line_cursor#1 char_cursor#85 ] ) always clobbers reg byte a +Statement [49] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a +Statement [50] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a +Statement [53] (byte) print_byte::b#0 ← > (word) print_word::w#6 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] ) always clobbers reg byte a +Statement [55] (byte) print_byte::b#1 ← < (word) print_word::w#6 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:13 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:17 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a +Statement [59] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] ) always clobbers reg byte a +Statement [62] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a +Statement [67] *((byte*) char_cursor#44) ← (byte) print_char::ch#2 [ char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] ) always clobbers reg byte y +Statement [72] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [74] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [79] *((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 [81] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [84] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#2 - (word) lin16u_gen::min#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 ] ) always clobbers reg byte a +Statement [85] (word) divr16u::divisor#0 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::ampl#0 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [86] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#0 divr16u::dividend#1 ] ) always clobbers reg byte a +Statement [88] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ) always clobbers reg byte a +Statement [89] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ) always clobbers reg byte a +Statement [90] (word) divr16u::divisor#1 ← (word) lin16u_gen::length#2 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::divisor#1 ] ) always clobbers reg byte a +Statement [93] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [94] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) always clobbers reg byte a +Statement [95] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ) always clobbers reg byte a +Statement [96] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#2 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ) always clobbers reg byte a +Statement [98] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ) always clobbers reg byte a +Statement [99] *((word*) lin16u_gen::lintab#3) ← (word~) lin16u_gen::$5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) always clobbers reg byte a reg byte y +Statement [100] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ) always clobbers reg byte a +Statement [101] (word*) lin16u_gen::lintab#2 ← (word*) lin16u_gen::lintab#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ) always clobbers reg byte a +Statement [103] if((word) lin16u_gen::i#1<(word) lin16u_gen::length#2) goto lin16u_gen::@1 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) always clobbers reg byte a +Statement [108] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [109] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [111] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [115] 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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [117] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#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 , -Potential registers zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 ] : zp ZP_WORD:3 , -Potential registers zp ZP_BYTE:5 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , -Potential registers zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:7 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 ] : zp ZP_WORD:7 , -Potential registers zp ZP_WORD:9 [ print_str::str#2 print_str::str#0 ] : zp ZP_WORD:9 , -Potential registers zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:11 , -Potential registers zp ZP_DWORD:13 [ lin16u_gen::val#2 lin16u_gen::val#1 ] : zp ZP_DWORD:13 , -Potential registers zp ZP_WORD:17 [ lin16u_gen::lintab#2 lin16u_gen::lintab#1 ] : zp ZP_WORD:17 , -Potential registers zp ZP_WORD:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] : zp ZP_WORD:19 , -Potential registers zp ZP_WORD:21 [ divr16u::divisor#6 ] : zp ZP_WORD:21 , -Potential registers zp ZP_WORD:23 [ 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:23 , -Potential registers zp ZP_WORD:25 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] : zp ZP_WORD:25 , -Potential registers zp ZP_WORD:27 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:27 , -Potential registers zp ZP_BYTE:29 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:29 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:30 [ print_word::w#0 ] : zp ZP_WORD:30 , -Potential registers zp ZP_BYTE:32 [ print_byte::$0 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ print_byte::$2 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:34 [ divr16u::return#2 ] : zp ZP_WORD:34 , -Potential registers zp ZP_WORD:36 [ lin16u_gen::stepi#0 ] : zp ZP_WORD:36 , -Potential registers zp ZP_WORD:38 [ divr16u::return#3 ] : zp ZP_WORD:38 , -Potential registers zp ZP_WORD:40 [ lin16u_gen::stepf#0 ] : zp ZP_WORD:40 , -Potential registers zp ZP_DWORD:42 [ lin16u_gen::step#0 ] : zp ZP_DWORD:42 , -Potential registers zp ZP_WORD:46 [ lin16u_gen::$5 ] : zp ZP_WORD:46 , -Potential registers zp ZP_BYTE:48 [ divr16u::$1 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ divr16u::$2 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:50 [ rem16u#1 ] : zp ZP_WORD:50 , +Potential registers zp ZP_WORD:3 [ line_cursor#11 line_cursor#21 line_cursor#1 ] : zp ZP_WORD:3 , +Potential registers zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 ] : zp ZP_WORD:5 , +Potential registers zp ZP_BYTE:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:7 , reg byte x , +Potential registers zp ZP_BYTE:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:9 [ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 ] : zp ZP_WORD:9 , +Potential registers zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] : zp ZP_WORD:11 , +Potential registers zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:13 , +Potential registers zp ZP_WORD:15 [ lin16u_gen::max#2 ] : zp ZP_WORD:15 , +Potential registers zp ZP_WORD:17 [ lin16u_gen::min#2 ] : zp ZP_WORD:17 , +Potential registers zp ZP_WORD:19 [ lin16u_gen::length#2 ] : zp ZP_WORD:19 , +Potential registers zp ZP_DWORD:21 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] : zp ZP_DWORD:21 , +Potential registers zp ZP_WORD:25 [ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] : zp ZP_WORD:25 , +Potential registers zp ZP_WORD:27 [ lin16u_gen::i#2 lin16u_gen::i#1 ] : zp ZP_WORD:27 , +Potential registers zp ZP_WORD:29 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] : zp ZP_WORD:29 , +Potential registers zp ZP_WORD:31 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:31 , +Potential registers zp ZP_WORD:33 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] : zp ZP_WORD:33 , +Potential registers zp ZP_WORD:35 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:35 , +Potential registers zp ZP_BYTE:37 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:38 [ print_byte::$0 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:39 [ print_byte::$2 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:40 [ lin16u_gen::ampl#0 ] : zp ZP_WORD:40 , +Potential registers zp ZP_WORD:42 [ divr16u::return#2 ] : zp ZP_WORD:42 , +Potential registers zp ZP_WORD:44 [ lin16u_gen::stepi#0 ] : zp ZP_WORD:44 , +Potential registers zp ZP_WORD:46 [ divr16u::return#3 ] : zp ZP_WORD:46 , +Potential registers zp ZP_WORD:48 [ lin16u_gen::stepf#0 ] : zp ZP_WORD:48 , +Potential registers zp ZP_DWORD:50 [ lin16u_gen::step#0 ] : zp ZP_DWORD:50 , +Potential registers zp ZP_WORD:54 [ lin16u_gen::$5 ] : zp ZP_WORD:54 , +Potential registers zp ZP_BYTE:56 [ divr16u::$1 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:57 [ divr16u::$2 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 251.87: zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 ] 192.97: zp ZP_WORD:7 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 ] 0.8: zp ZP_WORD:50 [ rem16u#1 ] -Uplift Scope [print_str] 303: zp ZP_WORD:9 [ print_str::str#2 print_str::str#0 ] -Uplift Scope [divr16u] 106.92: zp ZP_WORD:23 [ 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:27 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:48 [ divr16u::$1 ] 22: zp ZP_BYTE:49 [ divr16u::$2 ] 18.19: zp ZP_BYTE:29 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:25 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:34 [ divr16u::return#2 ] 4: zp ZP_WORD:38 [ divr16u::return#3 ] 1.38: zp ZP_WORD:21 [ divr16u::divisor#6 ] -Uplift Scope [lin16u_gen] 22: zp ZP_WORD:46 [ lin16u_gen::$5 ] 20.9: zp ZP_WORD:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] 16.5: zp ZP_DWORD:13 [ lin16u_gen::val#2 lin16u_gen::val#1 ] 15.58: zp ZP_WORD:17 [ lin16u_gen::lintab#2 lin16u_gen::lintab#1 ] 4: zp ZP_WORD:40 [ lin16u_gen::stepf#0 ] 1.62: zp ZP_DWORD:42 [ lin16u_gen::step#0 ] 0.8: zp ZP_WORD:36 [ lin16u_gen::stepi#0 ] -Uplift Scope [print_byte] 34.75: zp ZP_BYTE:5 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:32 [ print_byte::$0 ] 4: zp ZP_BYTE:33 [ print_byte::$2 ] -Uplift Scope [print_cls] 33: zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [main] 15.89: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_word] 5: zp ZP_WORD:30 [ print_word::w#0 ] +Uplift Scope [] 230.34: zp ZP_WORD:3 [ line_cursor#11 line_cursor#21 line_cursor#1 ] 188.31: zp ZP_WORD:9 [ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 ] +Uplift Scope [print_str] 305.5: zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Uplift Scope [divr16u] 116.86: zp ZP_WORD:31 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 36.42: zp ZP_WORD:35 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:56 [ divr16u::$1 ] 22: zp ZP_BYTE:57 [ divr16u::$2 ] 18.19: zp ZP_BYTE:37 [ divr16u::i#2 divr16u::i#1 ] 15.75: zp ZP_WORD:33 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] 5.62: zp ZP_WORD:29 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] 4: zp ZP_WORD:42 [ divr16u::return#2 ] 4: zp ZP_WORD:46 [ divr16u::return#3 ] +Uplift Scope [lin16u_gen] 22: zp ZP_WORD:54 [ lin16u_gen::$5 ] 21.17: zp ZP_DWORD:21 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] 20.9: zp ZP_WORD:27 [ lin16u_gen::i#2 lin16u_gen::i#1 ] 16.23: zp ZP_WORD:25 [ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] 4: zp ZP_WORD:48 [ lin16u_gen::stepf#0 ] 2: zp ZP_WORD:15 [ lin16u_gen::max#2 ] 2: zp ZP_WORD:40 [ lin16u_gen::ampl#0 ] 1.44: zp ZP_DWORD:50 [ lin16u_gen::step#0 ] 0.71: zp ZP_WORD:19 [ lin16u_gen::length#2 ] 0.67: zp ZP_WORD:44 [ lin16u_gen::stepi#0 ] 0.31: zp ZP_WORD:17 [ lin16u_gen::min#2 ] +Uplift Scope [print_word] 52.67: zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 ] +Uplift Scope [print_cls] 33: zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] +Uplift Scope [print_byte] 23.75: zp ZP_BYTE:7 [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:38 [ print_byte::$0 ] 4: zp ZP_BYTE:39 [ print_byte::$2 ] +Uplift Scope [main] 20.43: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] Uplift Scope [print_ln] -Uplifting [] best 16668 combination zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 ] zp ZP_WORD:7 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 ] zp ZP_WORD:50 [ rem16u#1 ] -Uplifting [print_str] best 16668 combination zp ZP_WORD:9 [ print_str::str#2 print_str::str#0 ] -Uplifting [divr16u] best 16478 combination zp ZP_WORD:23 [ 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:27 [ 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:25 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:34 [ divr16u::return#2 ] zp ZP_WORD:38 [ divr16u::return#3 ] zp ZP_WORD:21 [ divr16u::divisor#6 ] -Uplifting [lin16u_gen] best 16478 combination zp ZP_WORD:46 [ lin16u_gen::$5 ] zp ZP_WORD:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] zp ZP_DWORD:13 [ lin16u_gen::val#2 lin16u_gen::val#1 ] zp ZP_WORD:17 [ lin16u_gen::lintab#2 lin16u_gen::lintab#1 ] zp ZP_WORD:40 [ lin16u_gen::stepf#0 ] zp ZP_DWORD:42 [ lin16u_gen::step#0 ] zp ZP_WORD:36 [ lin16u_gen::stepi#0 ] -Uplifting [print_byte] best 16436 combination reg byte x [ print_byte::b#3 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_cls] best 16436 combination zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [main] best 16436 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Uplifting [print_char] best 16427 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_word] best 16427 combination zp ZP_WORD:30 [ print_word::w#0 ] -Uplifting [print_ln] best 16427 combination +Uplifting [] best 15713 combination zp ZP_WORD:3 [ line_cursor#11 line_cursor#21 line_cursor#1 ] zp ZP_WORD:9 [ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 ] +Uplifting [print_str] best 15713 combination zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Uplifting [divr16u] best 15523 combination zp ZP_WORD:31 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:35 [ 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:33 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:29 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] zp ZP_WORD:42 [ divr16u::return#2 ] zp ZP_WORD:46 [ divr16u::return#3 ] +Uplifting [lin16u_gen] best 15523 combination zp ZP_WORD:54 [ lin16u_gen::$5 ] zp ZP_DWORD:21 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] zp ZP_WORD:27 [ lin16u_gen::i#2 lin16u_gen::i#1 ] zp ZP_WORD:25 [ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] zp ZP_WORD:48 [ lin16u_gen::stepf#0 ] zp ZP_WORD:15 [ lin16u_gen::max#2 ] zp ZP_WORD:40 [ lin16u_gen::ampl#0 ] zp ZP_DWORD:50 [ lin16u_gen::step#0 ] zp ZP_WORD:19 [ lin16u_gen::length#2 ] zp ZP_WORD:44 [ lin16u_gen::stepi#0 ] zp ZP_WORD:17 [ lin16u_gen::min#2 ] +Uplifting [print_word] best 15523 combination zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 ] +Uplifting [print_cls] best 15523 combination zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 15481 combination reg byte x [ print_byte::b#3 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 [main] best 15481 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Uplifting [print_char] best 15472 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_ln] best 15472 combination Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 16427 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Coalescing zero page register [ zp ZP_WORD:23 [ 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:50 [ rem16u#1 ] ] -Coalescing zero page register [ zp ZP_WORD:27 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:34 [ divr16u::return#2 ] ] -Coalescing zero page register [ zp ZP_WORD:27 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:38 [ divr16u::return#3 ] ] -Coalescing zero page register [ zp ZP_WORD:27 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:40 [ lin16u_gen::stepf#0 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 ] ] with [ zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:17 [ lin16u_gen::lintab#2 lin16u_gen::lintab#1 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::lintab#2 lin16u_gen::lintab#1 ] ] with [ zp ZP_WORD:21 [ divr16u::divisor#6 ] ] -Coalescing zero page register [ zp ZP_WORD:7 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 ] ] with [ zp ZP_WORD:19 [ lin16u_gen::i#2 lin16u_gen::i#1 ] ] -Coalescing zero page register [ zp ZP_WORD:7 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 lin16u_gen::i#2 lin16u_gen::i#1 ] ] with [ zp ZP_WORD:23 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ print_str::str#2 print_str::str#0 ] ] with [ zp ZP_WORD:25 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ print_str::str#2 print_str::str#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] with [ zp ZP_WORD:30 [ print_word::w#0 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ print_str::str#2 print_str::str#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 print_word::w#0 ] ] with [ zp ZP_WORD:46 [ lin16u_gen::$5 ] ] -Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 lin16u_gen::i#2 lin16u_gen::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ print_str::str#2 print_str::str#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 print_word::w#0 lin16u_gen::$5 ] -Allocated (was zp ZP_DWORD:13) zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 ] -Allocated (was zp ZP_WORD:27) zp ZP_WORD:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] -Allocated (was zp ZP_WORD:36) zp ZP_WORD:15 [ lin16u_gen::stepi#0 ] -Allocated (was zp ZP_DWORD:42) zp ZP_DWORD:17 [ lin16u_gen::step#0 ] +Uplifting [main] best 15472 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Coalescing zero page register [ zp ZP_WORD:15 [ lin16u_gen::max#2 ] ] with [ zp ZP_WORD:31 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] +Coalescing zero page register [ zp ZP_WORD:15 [ lin16u_gen::max#2 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:40 [ lin16u_gen::ampl#0 ] ] +Coalescing zero page register [ zp ZP_WORD:35 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:42 [ divr16u::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:35 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:46 [ divr16u::return#3 ] ] +Coalescing zero page register [ zp ZP_WORD:35 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:48 [ lin16u_gen::stepf#0 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ line_cursor#11 line_cursor#21 line_cursor#1 ] ] with [ zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ line_cursor#11 line_cursor#21 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:15 [ lin16u_gen::max#2 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 lin16u_gen::ampl#0 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 ] ] with [ zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 print_str::str#7 print_str::str#9 print_str::str#0 ] ] with [ zp ZP_WORD:17 [ lin16u_gen::min#2 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 print_str::str#7 print_str::str#9 print_str::str#0 lin16u_gen::min#2 ] ] with [ zp ZP_WORD:27 [ lin16u_gen::i#2 lin16u_gen::i#1 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 ] ] with [ zp ZP_WORD:19 [ lin16u_gen::length#2 ] ] +Coalescing zero page register [ zp ZP_WORD:29 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] ] with [ zp ZP_WORD:54 [ lin16u_gen::$5 ] ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 lin16u_gen::length#2 ] +Allocated (was zp ZP_DWORD:21) zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] +Allocated (was zp ZP_WORD:25) zp ZP_WORD:13 [ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] +Allocated (was zp ZP_WORD:29) zp ZP_WORD:15 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 lin16u_gen::$5 ] +Allocated (was zp ZP_WORD:33) zp ZP_WORD:17 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] +Allocated (was zp ZP_WORD:35) zp ZP_WORD:19 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] +Allocated (was zp ZP_WORD:44) zp ZP_WORD:21 [ lin16u_gen::stepi#0 ] +Allocated (was zp ZP_DWORD:50) zp ZP_DWORD:23 [ lin16u_gen::step#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -3918,9 +4733,9 @@ ASSEMBLER BEFORE OPTIMIZATION .pc = $80d "Program" //SEG1 Global Constants & labels .label SCREEN = $400 - .label rem16u = 5 - .label char_cursor = 5 + .label char_cursor = 7 .label line_cursor = 3 + .label rem16u = 3 //SEG2 @begin bbegin: //SEG3 [1] phi from @begin to @18 [phi:@begin->@18] @@ -3940,117 +4755,350 @@ bend: //SEG9 main main: { .label i = 2 - //SEG10 [5] call lin16u_gen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [56] phi from main to lin16u_gen [phi:main->lin16u_gen] + //SEG10 [5] call lin16u_gen param-assignment [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] ) + //SEG11 [83] phi from main to lin16u_gen [phi:main->lin16u_gen] lin16u_gen_from_main: + //SEG12 [83] phi (word*) lin16u_gen::lintab#4 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + lda #lintab1 + sta lin16u_gen.lintab+1 + //SEG13 [83] phi (word) rem16u#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->lin16u_gen#1] -- vwuz1=vbuc1 + lda #<0 + sta rem16u + lda #>0 + sta rem16u+1 + //SEG14 [83] phi (word) lin16u_gen::length#2 = (byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main->lin16u_gen#2] -- vwuz1=vbuc1 + lda #<$14 + sta lin16u_gen.length + lda #>$14 + sta lin16u_gen.length+1 + //SEG15 [83] phi (word) lin16u_gen::min#2 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#3] -- vwuz1=vwuc1 + lda #<$22d + sta lin16u_gen.min + lda #>$22d + sta lin16u_gen.min+1 + //SEG16 [83] phi (word) lin16u_gen::max#2 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#4] -- vwuz1=vwuc1 + lda #<$7461 + sta lin16u_gen.max + lda #>$7461 + sta lin16u_gen.max+1 jsr lin16u_gen - //SEG12 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG17 [6] phi from main to main::@3 [phi:main->main::@3] b3_from_main: jmp b3 - //SEG13 main::@3 + //SEG18 main::@3 b3: - //SEG14 [7] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG15 [50] phi from main::@3 to print_cls [phi:main::@3->print_cls] - print_cls_from_b3: + //SEG19 [7] call lin16u_gen param-assignment [ ] ( main:2 [ ] ) + //SEG20 [83] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] + lin16u_gen_from_b3: + //SEG21 [83] phi (word*) lin16u_gen::lintab#4 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 + lda #lintab2 + sta lin16u_gen.lintab+1 + //SEG22 [83] phi (word) rem16u#20 = (word) divr16u::rem#11 [phi:main::@3->lin16u_gen#1] -- register_copy + //SEG23 [83] phi (word) lin16u_gen::length#2 = (byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@3->lin16u_gen#2] -- vwuz1=vbuc1 + lda #<$14 + sta lin16u_gen.length + lda #>$14 + sta lin16u_gen.length+1 + //SEG24 [83] phi (word) lin16u_gen::min#2 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#3] -- vwuz1=vwuc1 + lda #<$79cb + sta lin16u_gen.min + lda #>$79cb + sta lin16u_gen.min+1 + //SEG25 [83] phi (word) lin16u_gen::max#2 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#4] -- vwuz1=vwuc1 + lda #<$f781 + sta lin16u_gen.max + lda #>$f781 + sta lin16u_gen.max+1 + jsr lin16u_gen + //SEG26 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + b4_from_b3: + jmp b4 + //SEG27 main::@4 + b4: + //SEG28 [9] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG29 [77] phi from main::@4 to print_cls [phi:main::@4->print_cls] + print_cls_from_b4: jsr print_cls - //SEG16 [8] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - b1_from_b3: - //SEG17 [8] phi (byte*) line_cursor#19 = (const byte*) SCREEN#0 [phi:main::@3->main::@1#0] -- pbuz1=pbuc1 + //SEG30 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + b5_from_b4: + jmp b5 + //SEG31 main::@5 + b5: + //SEG32 [11] call print_str param-assignment [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) + //SEG33 [70] phi from main::@5 to print_str [phi:main::@5->print_str] + print_str_from_b5: + //SEG34 [70] phi (byte*) char_cursor#74 = (const byte*) SCREEN#0 [phi:main::@5->print_str#0] -- pbuz1=pbuc1 + lda #SCREEN + sta char_cursor+1 + //SEG35 [70] phi (byte*) print_str::str#9 = (const string) main::str [phi:main::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG36 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + b6_from_b5: + jmp b6 + //SEG37 main::@6 + b6: + //SEG38 [13] call print_word param-assignment [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + //SEG39 [52] phi from main::@6 to print_word [phi:main::@6->print_word] + print_word_from_b6: + //SEG40 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 557 [phi:main::@6->print_word#0] -- vwuz1=vwuc1 + lda #<$22d + sta print_word.w + lda #>$22d + sta print_word.w+1 + jsr print_word + //SEG41 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + b7_from_b6: + jmp b7 + //SEG42 main::@7 + b7: + //SEG43 [15] call print_str param-assignment [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) + //SEG44 [70] phi from main::@7 to print_str [phi:main::@7->print_str] + print_str_from_b7: + //SEG45 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@7->print_str#0] -- register_copy + //SEG46 [70] phi (byte*) print_str::str#9 = (const string) main::str1 [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG47 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + b8_from_b7: + jmp b8 + //SEG48 main::@8 + b8: + //SEG49 [17] call print_word param-assignment [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + //SEG50 [52] phi from main::@8 to print_word [phi:main::@8->print_word] + print_word_from_b8: + //SEG51 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 31179 [phi:main::@8->print_word#0] -- vwuz1=vwuc1 + lda #<$79cb + sta print_word.w + lda #>$79cb + sta print_word.w+1 + jsr print_word + //SEG52 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + b9_from_b8: + jmp b9 + //SEG53 main::@9 + b9: + //SEG54 [19] call print_ln param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG55 [47] phi from main::@9 to print_ln [phi:main::@9->print_ln] + print_ln_from_b9: + //SEG56 [47] phi (byte*) line_cursor#21 = (const byte*) SCREEN#0 [phi:main::@9->print_ln#0] -- pbuz1=pbuc1 lda #SCREEN sta line_cursor+1 - //SEG18 [8] phi (byte*) char_cursor#47 = (const byte*) SCREEN#0 [phi:main::@3->main::@1#1] -- pbuz1=pbuc1 - lda #SCREEN - sta char_cursor+1 - //SEG19 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@1#2] -- vbuz1=vbuc1 + jsr print_ln + //SEG57 [20] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + b1_from_b9: + //SEG58 [20] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG20 main::@1 + //SEG59 [20] phi from main::@16 to main::@1 [phi:main::@16->main::@1] + b1_from_b16: + //SEG60 [20] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@16->main::@1#0] -- register_copy + jmp b1 + //SEG61 main::@1 b1: - //SEG21 [9] (byte) print_byte::b#2 ← (byte) main::i#2 [ main::i#2 char_cursor#47 line_cursor#19 print_byte::b#2 ] ( main:2 [ main::i#2 char_cursor#47 line_cursor#19 print_byte::b#2 ] ) -- vbuxx=vbuz1 + //SEG62 [21] (byte) print_byte::b#2 ← (byte) main::i#2 [ main::i#2 print_byte::b#2 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 line_cursor#1 ] ) -- vbuxx=vbuz1 ldx i - //SEG22 [10] call print_byte param-assignment [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG23 [31] phi from main::@1 to print_byte [phi:main::@1->print_byte] - print_byte_from_b1: - //SEG24 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#47 [phi:main::@1->print_byte#0] -- register_copy - //SEG25 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy - jsr print_byte - //SEG26 [11] phi from main::@1 to main::@5 [phi:main::@1->main::@5] - b5_from_b1: - jmp b5 - //SEG27 main::@5 - b5: - //SEG28 [12] call print_str param-assignment [ main::i#2 line_cursor#19 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#2 ] ) - //SEG29 [43] phi from main::@5 to print_str [phi:main::@5->print_str] - print_str_from_b5: - jsr print_str - jmp b6 - //SEG30 main::@6 - b6: - //SEG31 [13] (word) print_word::w#0 ← *((const word[20]) main::lintab#0 + (byte) main::i#2) [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i - lda lintab,y - sta print_word.w - lda lintab+1,y - sta print_word.w+1 - //SEG32 [14] call print_word param-assignment [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - jsr print_word - //SEG33 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - b7_from_b6: - jmp b7 - //SEG34 main::@7 - b7: - //SEG35 [16] call print_ln param-assignment [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) - //SEG36 [21] phi from main::@7 to print_ln [phi:main::@7->print_ln] - print_ln_from_b7: - jsr print_ln - jmp b8 - //SEG37 main::@8 - b8: - //SEG38 [17] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 - lda #2 - clc - adc i - sta i - //SEG39 [18] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@9 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_lt_vbuc1_then_la1 - lda i - cmp #$14*2 - bcc b9 - jmp breturn - //SEG40 main::@return - breturn: - //SEG41 [19] return [ ] ( main:2 [ ] ) - rts - //SEG42 main::@9 - b9: - //SEG43 [20] (byte*~) char_cursor#51 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#51 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#51 line_cursor#1 ] ) -- pbuz1=pbuz2 + //SEG63 [22] (byte*~) char_cursor#77 ← (byte*) line_cursor#1 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ) -- pbuz1=pbuz2 lda line_cursor sta char_cursor lda line_cursor+1 sta char_cursor+1 - //SEG44 [8] phi from main::@9 to main::@1 [phi:main::@9->main::@1] - b1_from_b9: - //SEG45 [8] phi (byte*) line_cursor#19 = (byte*) line_cursor#1 [phi:main::@9->main::@1#0] -- register_copy - //SEG46 [8] phi (byte*) char_cursor#47 = (byte*~) char_cursor#51 [phi:main::@9->main::@1#1] -- register_copy - //SEG47 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#2] -- register_copy - jmp b1 - str: .text " @" - lintab: .fill $28, 0 + //SEG64 [23] call print_byte param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG65 [58] phi from main::@1 to print_byte [phi:main::@1->print_byte] + print_byte_from_b1: + //SEG66 [58] phi (byte*) char_cursor#69 = (byte*~) char_cursor#77 [phi:main::@1->print_byte#0] -- register_copy + //SEG67 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG68 [24] phi from main::@1 to main::@11 [phi:main::@1->main::@11] + b11_from_b1: + jmp b11 + //SEG69 main::@11 + b11: + //SEG70 [25] call print_str param-assignment [ main::i#2 line_cursor#1 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#2 ] ) + //SEG71 [70] phi from main::@11 to print_str [phi:main::@11->print_str] + print_str_from_b11: + //SEG72 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@11->print_str#0] -- register_copy + //SEG73 [70] phi (byte*) print_str::str#9 = (const string) main::str2 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + jmp b12 + //SEG74 main::@12 + b12: + //SEG75 [26] (word) print_word::w#2 ← *((const word[20]) main::lintab1#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy i + lda lintab1,y + sta print_word.w + lda lintab1+1,y + sta print_word.w+1 + //SEG76 [27] call print_word param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG77 [52] phi from main::@12 to print_word [phi:main::@12->print_word] + print_word_from_b12: + //SEG78 [52] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:main::@12->print_word#0] -- register_copy + jsr print_word + //SEG79 [28] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + b13_from_b12: + jmp b13 + //SEG80 main::@13 + b13: + //SEG81 [29] call print_str param-assignment [ main::i#2 line_cursor#1 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#2 ] ) + //SEG82 [70] phi from main::@13 to print_str [phi:main::@13->print_str] + print_str_from_b13: + //SEG83 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@13->print_str#0] -- register_copy + //SEG84 [70] phi (byte*) print_str::str#9 = (const string) main::str3 [phi:main::@13->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + jmp b14 + //SEG85 main::@14 + b14: + //SEG86 [30] (word) print_word::w#3 ← *((const word[20]) main::lintab2#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy i + lda lintab2,y + sta print_word.w + lda lintab2+1,y + sta print_word.w+1 + //SEG87 [31] call print_word param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG88 [52] phi from main::@14 to print_word [phi:main::@14->print_word] + print_word_from_b14: + //SEG89 [52] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:main::@14->print_word#0] -- register_copy + jsr print_word + //SEG90 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + b15_from_b14: + jmp b15 + //SEG91 main::@15 + b15: + //SEG92 [33] call print_ln param-assignment [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) + //SEG93 [47] phi from main::@15 to print_ln [phi:main::@15->print_ln] + print_ln_from_b15: + //SEG94 [47] phi (byte*) line_cursor#21 = (byte*) line_cursor#1 [phi:main::@15->print_ln#0] -- register_copy + jsr print_ln + jmp b16 + //SEG95 main::@16 + b16: + //SEG96 [34] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + lda #2 + clc + adc i + sta i + //SEG97 [35] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + lda i + cmp #$14*2 + bcc b1_from_b16 + jmp b2 + //SEG98 main::@2 + b2: + //SEG99 [36] (byte*~) char_cursor#85 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#85 ] ( main:2 [ line_cursor#1 char_cursor#85 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG100 [37] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + //SEG101 [70] phi from main::@2 to print_str [phi:main::@2->print_str] + print_str_from_b2: + //SEG102 [70] phi (byte*) char_cursor#74 = (byte*~) char_cursor#85 [phi:main::@2->print_str#0] -- register_copy + //SEG103 [70] phi (byte*) print_str::str#9 = (const string) main::str4 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + lda #str4 + sta print_str.str+1 + jsr print_str + //SEG104 [38] phi from main::@2 to main::@17 [phi:main::@2->main::@17] + b17_from_b2: + jmp b17 + //SEG105 main::@17 + b17: + //SEG106 [39] call print_word param-assignment [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + //SEG107 [52] phi from main::@17 to print_word [phi:main::@17->print_word] + print_word_from_b17: + //SEG108 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 29793 [phi:main::@17->print_word#0] -- vwuz1=vwuc1 + lda #<$7461 + sta print_word.w + lda #>$7461 + sta print_word.w+1 + jsr print_word + //SEG109 [40] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + b18_from_b17: + jmp b18 + //SEG110 main::@18 + b18: + //SEG111 [41] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + //SEG112 [70] phi from main::@18 to print_str [phi:main::@18->print_str] + print_str_from_b18: + //SEG113 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@18->print_str#0] -- register_copy + //SEG114 [70] phi (byte*) print_str::str#9 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + lda #str5 + sta print_str.str+1 + jsr print_str + //SEG115 [42] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + b19_from_b18: + jmp b19 + //SEG116 main::@19 + b19: + //SEG117 [43] call print_word param-assignment [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + //SEG118 [52] phi from main::@19 to print_word [phi:main::@19->print_word] + print_word_from_b19: + //SEG119 [52] phi (word) print_word::w#6 = (word/dword/signed dword) 63361 [phi:main::@19->print_word#0] -- vwuz1=vwuc1 + lda #<$f781 + sta print_word.w + lda #>$f781 + sta print_word.w+1 + jsr print_word + //SEG120 [44] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + b20_from_b19: + jmp b20 + //SEG121 main::@20 + b20: + //SEG122 [45] call print_ln param-assignment [ ] ( main:2 [ ] ) + //SEG123 [47] phi from main::@20 to print_ln [phi:main::@20->print_ln] + print_ln_from_b20: + //SEG124 [47] phi (byte*) line_cursor#21 = (byte*) line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy + jsr print_ln + jmp breturn + //SEG125 main::@return + breturn: + //SEG126 [46] return [ ] ( main:2 [ ] ) + rts + str: .text " @" + str1: .text " @" + str2: .text " @" + str3: .text " @" + str4: .text " @" + str5: .text " @" + lintab1: .fill $28, 0 + lintab2: .fill $28, 0 } -//SEG48 print_ln +//SEG127 print_ln print_ln: { - //SEG49 [22] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG128 [48] 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: - //SEG50 [22] phi (byte*) line_cursor#9 = (byte*) line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG129 [48] phi (byte*) line_cursor#11 = (byte*) line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG51 print_ln::@1 + //SEG130 print_ln::@1 b1: - //SEG52 [23] (byte*) line_cursor#1 ← (byte*) line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG131 [49] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -4058,7 +5106,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG53 [24] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG132 [50] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1_from_b1 @@ -4068,170 +5116,163 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG54 print_ln::@return + //SEG133 print_ln::@return breturn: - //SEG55 [25] return [ line_cursor#1 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 ] ) + //SEG134 [51] return [ line_cursor#1 ] ( main:2::print_ln:19 [ line_cursor#1 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 ] main:2::print_ln:45 [ line_cursor#1 ] ) rts } -//SEG56 print_word +//SEG135 print_word print_word: { - .label w = 7 - //SEG57 [26] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#0 char_cursor#2 ] ) -- vbuxx=_hi_vwuz1 + .label w = 5 + //SEG136 [53] (byte) print_byte::b#0 ← > (word) print_word::w#6 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] ) -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG58 [27] call print_byte param-assignment [ print_word::w#0 char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] ) - //SEG59 [31] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG137 [54] call print_byte param-assignment [ char_cursor#11 print_word::w#6 ] ( main:2::print_word:13 [ char_cursor#11 print_word::w#6 ] main:2::print_word:17 [ char_cursor#11 print_word::w#6 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_word::w#6 ] ) + //SEG138 [58] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG60 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG61 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG139 [58] phi (byte*) char_cursor#69 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG140 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG62 print_word::@1 + //SEG141 print_word::@1 b1: - //SEG63 [28] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 + //SEG142 [55] (byte) print_byte::b#1 ← < (word) print_word::w#6 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:13 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:17 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 lda w tax - //SEG64 [29] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG65 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG143 [56] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) + //SEG144 [58] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG66 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG67 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG145 [58] phi (byte*) char_cursor#69 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG146 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG68 print_word::@return + //SEG147 print_word::@return breturn: - //SEG69 [30] return [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG148 [57] return [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) rts } -//SEG70 print_byte +//SEG149 print_byte print_byte: { - //SEG71 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#45 print_byte::$0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 + //SEG150 [59] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG72 [33] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#45 print_char::ch#0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG151 [60] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda hextab,y - //SEG73 [34] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] ) - //SEG74 [39] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG152 [61] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] ) + //SEG153 [66] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG75 [39] phi (byte*) char_cursor#32 = (byte*) char_cursor#45 [phi:print_byte->print_char#0] -- register_copy - //SEG76 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG154 [66] phi (byte*) char_cursor#44 = (byte*) char_cursor#69 [phi:print_byte->print_char#0] -- register_copy + //SEG155 [66] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG77 print_byte::@1 + //SEG156 print_byte::@1 b1: - //SEG78 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG157 [62] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG79 [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG158 [63] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda hextab,y - //SEG80 [37] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG81 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG159 [64] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) + //SEG160 [66] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG82 [39] phi (byte*) char_cursor#32 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG83 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG161 [66] phi (byte*) char_cursor#44 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG162 [66] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG84 print_byte::@return + //SEG163 print_byte::@return breturn: - //SEG85 [38] return [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG164 [65] return [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) rts hextab: .text "0123456789abcdef" } -//SEG86 print_char +//SEG165 print_char print_char: { - //SEG87 [40] *((byte*) char_cursor#32) ← (byte) print_char::ch#2 [ char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] ) -- _deref_pbuz1=vbuaa + //SEG166 [67] *((byte*) char_cursor#44) ← (byte) print_char::ch#2 [ char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (char_cursor),y - //SEG88 [41] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#32 [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + //SEG167 [68] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#44 [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: jmp breturn - //SEG89 print_char::@return + //SEG168 print_char::@return breturn: - //SEG90 [42] return [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG169 [69] return [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) rts } -//SEG91 print_str +//SEG170 print_str print_str: { - .label str = 7 - //SEG92 [44] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] + .label str = 5 + //SEG171 [71] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: - //SEG93 [44] phi (byte*) char_cursor#2 = (byte*) char_cursor#11 [phi:print_str->print_str::@1#0] -- register_copy - //SEG94 [44] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 - lda #main.str - sta str+1 + b1_from_b2: + //SEG172 [71] phi (byte*) char_cursor#2 = (byte*) char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG173 [71] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG95 print_str::@1 + //SEG174 print_str::@1 b1: - //SEG96 [45] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG175 [72] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG97 print_str::@return + //SEG176 print_str::@return breturn: - //SEG98 [46] return [ char_cursor#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 ] ) + //SEG177 [73] return [ char_cursor#2 ] ( main:2::print_str:11 [ char_cursor#2 ] main:2::print_str:15 [ char_cursor#2 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 ] ) rts - //SEG99 print_str::@2 + //SEG178 print_str::@2 b2: - //SEG100 [47] *((byte*) char_cursor#2) ← *((byte*) print_str::str#2) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG179 [74] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (char_cursor),y - //SEG101 [48] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#2 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#2 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG180 [75] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#7 char_cursor#1 ] main:2::print_str:15 [ print_str::str#7 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG102 [49] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG181 [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#0 char_cursor#1 ] main:2::print_str:15 [ print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG103 [44] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] - b1_from_b2: - //SEG104 [44] phi (byte*) char_cursor#2 = (byte*) char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG105 [44] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy - jmp b1 + jmp b1_from_b2 } -//SEG106 print_cls +//SEG182 print_cls print_cls: { .label sc = 3 - //SEG107 [51] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG183 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG108 [51] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG184 [78] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG109 [51] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG185 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG110 [51] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG186 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG111 print_cls::@1 + //SEG187 print_cls::@1 b1: - //SEG112 [52] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG188 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG113 [53] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG189 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG114 [54] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG190 [81] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1_from_b1 @@ -4239,78 +5280,95 @@ print_cls: { cmp #divr16u] - divr16u_from_lin16u_gen: - //SEG120 [73] phi (word) divr16u::divisor#6 = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 - lda #length-1 + lda length+1 + sbc #0 sta divr16u.divisor+1 - //SEG121 [73] phi (word) divr16u::dividend#5 = (const word) lin16u_gen::ampl#0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vwuc1 - lda #ampl + lda ampl+1 sta divr16u.dividend+1 - //SEG122 [73] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 + //SEG197 [87] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ) + //SEG198 [105] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + divr16u_from_lin16u_gen: + //SEG199 [105] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:lin16u_gen->divr16u#0] -- register_copy + //SEG200 [105] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy + //SEG201 [105] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG123 [58] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#2 rem16u#1 ] ) - // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:13 + //SEG202 [88] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ) + // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:19 jmp b3 - //SEG124 lin16u_gen::@3 + //SEG203 lin16u_gen::@3 b3: - //SEG125 [59] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#1 ] ) -- vwuz1=vwuz2 + //SEG204 [89] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ) -- vwuz1=vwuz2 lda divr16u.return sta stepi lda divr16u.return+1 sta stepi+1 - //SEG126 [60] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ) - // (word) divr16u::rem#4 = (word) rem16u#1 // register copy zp ZP_WORD:5 - //SEG127 [61] call divr16u param-assignment [ divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 lin16u_gen::stepi#0 ] ) - //SEG128 [73] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] - divr16u_from_b3: - //SEG129 [73] phi (word) divr16u::divisor#6 = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 - lda #length-1 + lda length+1 + sbc #0 sta divr16u.divisor+1 - //SEG130 [73] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 + //SEG206 [91] (word) divr16u::rem#4 ← (word) divr16u::rem#11 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ) + // (word) divr16u::rem#4 = (word) divr16u::rem#11 // register copy zp ZP_WORD:3 + //SEG207 [92] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ) + //SEG208 [105] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + divr16u_from_b3: + //SEG209 [105] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:lin16u_gen::@3->divr16u#0] -- register_copy + //SEG210 [105] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.dividend lda #>0 sta divr16u.dividend+1 - //SEG131 [73] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy + //SEG211 [105] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy jsr divr16u - //SEG132 [62] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] ) - // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:13 + //SEG212 [93] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ) + // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:19 jmp b4 - //SEG133 lin16u_gen::@4 + //SEG213 lin16u_gen::@4 b4: - //SEG134 [63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) - // (word) lin16u_gen::stepf#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:13 - //SEG135 [64] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 ] ) -- vduz1=vwuz2_dword_vwuz3 + //SEG214 [94] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) + // (word) lin16u_gen::stepf#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:19 + //SEG215 [95] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ) -- vduz1=vwuz2_dword_vwuz3 lda stepi sta step+2 lda stepi+1 @@ -4319,49 +5377,46 @@ lin16u_gen: { sta step lda stepf+1 sta step+1 - //SEG136 [65] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + //SEG216 [96] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#2 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ) -- vduz1=vwuz2_dword_vbuc1 + lda #<0 + sta val + lda #>0 + sta val+1 + lda min + sta val+2 + lda min+1 + sta val+3 + //SEG217 [97] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] b1_from_b4: - //SEG137 [65] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 + //SEG218 [97] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG138 [65] phi (word*) lin16u_gen::lintab#2 = (const word[20]) main::lintab#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- pwuz1=pwuc1 - lda #main.lintab - sta lintab+1 - //SEG139 [65] phi (dword) lin16u_gen::val#2 = (const word) lin16u_gen::min#0*(dword/signed dword) 65536+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vduz1=vduc1 - lda #min*$10000+0 - sta val+1 - lda #>$10 - sta val+2 - lda #>min*$10000+0>>$10 - sta val+3 + //SEG219 [97] phi (word*) lin16u_gen::lintab#3 = (word*) lin16u_gen::lintab#4 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + //SEG220 [97] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy jmp b1 - //SEG140 [65] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] + //SEG221 [97] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] b1_from_b1: - //SEG141 [65] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy - //SEG142 [65] phi (word*) lin16u_gen::lintab#2 = (word*) lin16u_gen::lintab#1 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy - //SEG143 [65] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy + //SEG222 [97] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy + //SEG223 [97] phi (word*) lin16u_gen::lintab#3 = (word*) lin16u_gen::lintab#2 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy + //SEG224 [97] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy jmp b1 - //SEG144 lin16u_gen::@1 + //SEG225 lin16u_gen::@1 b1: - //SEG145 [66] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ) -- vwuz1=_hi_vduz2 + //SEG226 [98] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ) -- vwuz1=_hi_vduz2 lda val+2 sta _5 lda val+3 sta _5+1 - //SEG146 [67] *((word*) lin16u_gen::lintab#2) ← (word~) lin16u_gen::$5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) -- _deref_pwuz1=vwuz2 + //SEG227 [99] *((word*) lin16u_gen::lintab#3) ← (word~) lin16u_gen::$5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) -- _deref_pwuz1=vwuz2 ldy #0 lda _5 sta (lintab),y iny lda _5+1 sta (lintab),y - //SEG147 [68] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG228 [100] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ) -- vduz1=vduz1_plus_vduz2 lda val clc adc step @@ -4375,7 +5430,7 @@ lin16u_gen: { lda val+3 adc step+3 sta val+3 - //SEG148 [69] (word*) lin16u_gen::lintab#1 ← (word*) lin16u_gen::lintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ) -- pwuz1=pwuz1_plus_vbuc1 + //SEG229 [101] (word*) lin16u_gen::lintab#2 ← (word*) lin16u_gen::lintab#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ) -- pwuz1=pwuz1_plus_vbuc1 clc lda lintab adc #<2 @@ -4383,85 +5438,85 @@ lin16u_gen: { lda lintab+1 adc #>2 sta lintab+1 - //SEG149 [70] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + //SEG230 [102] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG150 [71] if((word) lin16u_gen::i#1<(const word) lin16u_gen::length#0) goto lin16u_gen::@1 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + //SEG231 [103] if((word) lin16u_gen::i#1<(word) lin16u_gen::length#2) goto lin16u_gen::@1 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) -- vwuz1_lt_vwuz2_then_la1 lda i+1 - cmp #>length + cmp length+1 bcc b1_from_b1 bne !+ lda i - cmp #divr16u::@1] + .label rem = 3 + .label dividend = $11 + .label quotient = $13 + .label return = $13 + .label divisor = $f + //SEG235 [106] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG155 [74] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG236 [106] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG156 [74] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG237 [106] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG157 [74] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG158 [74] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG238 [106] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG239 [106] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG159 [74] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG240 [106] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG160 [74] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG161 [74] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG162 [74] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG163 [74] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG241 [106] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG242 [106] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG243 [106] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG244 [106] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG164 divr16u::@1 + //SEG245 divr16u::@1 b1: - //SEG165 [75] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 + //SEG246 [107] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG166 [76] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuaa=_hi_vwuz1 + //SEG247 [108] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG167 [77] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuaa=vbuaa_band_vbuc1 + //SEG248 [109] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG168 [78] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuaa_eq_0_then_la1 + //SEG249 [110] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG169 divr16u::@4 + //SEG250 divr16u::@4 b4: - //SEG170 [79] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 + //SEG251 [111] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG171 [80] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG252 [112] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG172 [80] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG253 [112] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG173 divr16u::@2 + //SEG254 divr16u::@2 b2: - //SEG174 [81] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) -- vwuz1=vwuz1_rol_1 + //SEG255 [113] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG175 [82] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 + //SEG256 [114] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG176 [83] 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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 + //SEG257 [115] 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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -4471,14 +5526,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG177 divr16u::@5 + //SEG258 divr16u::@5 b5: - //SEG178 [84] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG259 [116] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG179 [85] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) -- vwuz1=vwuz1_minus_vwuz2 + //SEG260 [117] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -4486,28 +5541,23 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG180 [86] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG261 [118] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG181 [86] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG182 [86] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG262 [118] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG263 [118] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG183 divr16u::@3 + //SEG264 divr16u::@3 b3: - //SEG184 [87] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG265 [119] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG185 [88] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG266 [120] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 - jmp b6 - //SEG186 divr16u::@6 - b6: - //SEG187 [89] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) - // (word) rem16u#1 = (word) divr16u::rem#11 // register copy zp ZP_WORD:5 jmp breturn - //SEG188 divr16u::@return + //SEG267 divr16u::@return breturn: - //SEG189 [90] return [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) + //SEG268 [121] return [ divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] ) rts } @@ -4515,11 +5565,24 @@ ASSEMBLER OPTIMIZATIONS Removing instruction jmp b18 Removing instruction jmp bend Removing instruction jmp b3 -Removing instruction jmp b1 +Removing instruction jmp b4 Removing instruction jmp b5 Removing instruction jmp b6 Removing instruction jmp b7 Removing instruction jmp b8 +Removing instruction jmp b9 +Removing instruction jmp b1 +Removing instruction jmp b11 +Removing instruction jmp b12 +Removing instruction jmp b13 +Removing instruction jmp b14 +Removing instruction jmp b15 +Removing instruction jmp b16 +Removing instruction jmp b2 +Removing instruction jmp b17 +Removing instruction jmp b18 +Removing instruction jmp b19 +Removing instruction jmp b20 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn @@ -4541,19 +5604,22 @@ Removing instruction jmp b4 Removing instruction jmp b2 Removing instruction jmp b5 Removing instruction jmp b3 -Removing instruction jmp b6 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #>0 Removing instruction lda i Removing instruction ldy #0 Removing instruction lda #>0 Removing instruction lda #>0 Removing instruction lda #>0 +Removing instruction lda #>0 Replacing instruction lda #<0 with TXA Removing instruction lda #>0 Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b1_from_b16 with b1 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_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 @@ -4567,13 +5633,38 @@ Removing instruction b18_from_bbegin: Removing instruction main_from_b18: Removing instruction bend_from_b18: Removing instruction b3_from_main: -Removing instruction print_cls_from_b3: -Removing instruction b5_from_b1: +Removing instruction lin16u_gen_from_b3: +Removing instruction b4_from_b3: +Removing instruction print_cls_from_b4: +Removing instruction b5_from_b4: Removing instruction print_str_from_b5: +Removing instruction b6_from_b5: +Removing instruction print_word_from_b6: Removing instruction b7_from_b6: -Removing instruction print_ln_from_b7: +Removing instruction print_str_from_b7: +Removing instruction b8_from_b7: +Removing instruction print_word_from_b8: +Removing instruction b9_from_b8: +Removing instruction print_ln_from_b9: +Removing instruction b1_from_b16: +Removing instruction b11_from_b1: +Removing instruction print_str_from_b11: +Removing instruction b13_from_b12: +Removing instruction print_str_from_b13: +Removing instruction b15_from_b14: +Removing instruction print_ln_from_b15: +Removing instruction b17_from_b2: +Removing instruction print_word_from_b17: +Removing instruction b18_from_b17: +Removing instruction print_str_from_b18: +Removing instruction b19_from_b18: +Removing instruction print_word_from_b19: +Removing instruction b20_from_b19: +Removing instruction print_ln_from_b20: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: +Removing instruction b1_from_print_str: +Removing instruction b1_from_b2: Removing instruction b1_from_b1: Removing instruction b1_from_b1: Removing instruction b1_from_b3: @@ -4586,14 +5677,29 @@ Removing instruction b18: Removing instruction bend: Removing instruction lin16u_gen_from_main: Removing instruction b3: -Removing instruction b1_from_b3: -Removing instruction print_byte_from_b1: +Removing instruction b4: Removing instruction b5: Removing instruction b6: Removing instruction b7: Removing instruction b8: -Removing instruction breturn: +Removing instruction b9: Removing instruction b1_from_b9: +Removing instruction print_byte_from_b1: +Removing instruction b11: +Removing instruction b12: +Removing instruction print_word_from_b12: +Removing instruction b13: +Removing instruction b14: +Removing instruction print_word_from_b14: +Removing instruction b15: +Removing instruction b16: +Removing instruction b2: +Removing instruction print_str_from_b2: +Removing instruction b17: +Removing instruction b18: +Removing instruction b19: +Removing instruction b20: +Removing instruction breturn: Removing instruction breturn: Removing instruction print_byte_from_print_word: Removing instruction b1: @@ -4604,9 +5710,7 @@ Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: Removing instruction breturn: -Removing instruction b1_from_print_str: Removing instruction breturn: -Removing instruction b1_from_b2: Removing instruction b1_from_print_cls: Removing instruction breturn: Removing instruction divr16u_from_lin16u_gen: @@ -4618,12 +5722,12 @@ Removing instruction breturn: Removing instruction b1_from_divr16u: Removing instruction b4: Removing instruction b5: -Removing instruction b6: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b1 +Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE @@ -4633,13 +5737,14 @@ FINAL SYMBOL TABLE (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) char_cursor -(byte*) char_cursor#1 char_cursor zp ZP_WORD:5 101.0 -(byte*) char_cursor#11 char_cursor zp ZP_WORD:5 5.449999999999998 -(byte*) char_cursor#2 char_cursor zp ZP_WORD:5 43.85714285714286 -(byte*) char_cursor#32 char_cursor zp ZP_WORD:5 4.0 -(byte*) char_cursor#45 char_cursor zp ZP_WORD:5 5.666666666666667 -(byte*) char_cursor#47 char_cursor zp ZP_WORD:5 11.0 -(byte*~) char_cursor#51 char_cursor zp ZP_WORD:5 22.0 +(byte*) char_cursor#1 char_cursor zp ZP_WORD:7 101.0 +(byte*) char_cursor#11 char_cursor zp ZP_WORD:7 4.586206896551724 +(byte*) char_cursor#2 char_cursor zp ZP_WORD:7 17.055555555555554 +(byte*) char_cursor#44 char_cursor zp ZP_WORD:7 4.0 +(byte*) char_cursor#69 char_cursor zp ZP_WORD:7 5.666666666666667 +(byte*) char_cursor#74 char_cursor zp ZP_WORD:7 30.0 +(byte*~) char_cursor#77 char_cursor zp ZP_WORD:7 22.0 +(byte*~) char_cursor#85 char_cursor zp ZP_WORD:7 4.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) (byte~) divr16u::$1 reg byte a 22.0 (byte~) divr16u::$2 reg byte a 22.0 @@ -4648,70 +5753,86 @@ FINAL SYMBOL TABLE (label) divr16u::@3 (label) divr16u::@4 (label) divr16u::@5 -(label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp ZP_WORD:7 2.75 -(word) divr16u::dividend#3 dividend zp ZP_WORD:7 5.0 -(word) divr16u::dividend#5 dividend zp ZP_WORD:7 2.0 +(word) divr16u::dividend#0 dividend zp ZP_WORD:17 2.75 +(word) divr16u::dividend#1 dividend zp ZP_WORD:17 4.0 +(word) divr16u::dividend#3 dividend zp ZP_WORD:17 5.0 +(word) divr16u::dividend#5 dividend zp ZP_WORD:17 4.0 (word) divr16u::divisor -(word) divr16u::divisor#6 divisor zp ZP_WORD:3 1.375 +(word) divr16u::divisor#0 divisor zp ZP_WORD:15 2.0 +(word) divr16u::divisor#1 divisor zp ZP_WORD:15 2.0 +(word) divr16u::divisor#6 divisor zp ZP_WORD:15 1.625 (byte) divr16u::i (byte) divr16u::i#1 reg byte x 16.5 (byte) divr16u::i#2 reg byte x 1.6923076923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp ZP_WORD:13 16.5 -(word) divr16u::quotient#2 quotient zp ZP_WORD:13 11.0 -(word) divr16u::quotient#3 quotient zp ZP_WORD:13 2.75 +(word) divr16u::quotient#1 quotient zp ZP_WORD:19 16.5 +(word) divr16u::quotient#2 quotient zp ZP_WORD:19 11.0 +(word) divr16u::quotient#3 quotient zp ZP_WORD:19 2.75 (word) divr16u::rem -(word) divr16u::rem#0 rem zp ZP_WORD:5 8.25 -(word) divr16u::rem#1 rem zp ZP_WORD:5 22.0 -(word) divr16u::rem#10 rem zp ZP_WORD:5 4.0 -(word) divr16u::rem#11 rem zp ZP_WORD:5 11.666666666666666 -(word) divr16u::rem#2 rem zp ZP_WORD:5 22.0 -(word) divr16u::rem#4 rem zp ZP_WORD:5 4.0 -(word) divr16u::rem#5 rem zp ZP_WORD:5 24.0 -(word) divr16u::rem#6 rem zp ZP_WORD:5 11.0 +(word) divr16u::rem#0 rem zp ZP_WORD:3 8.25 +(word) divr16u::rem#1 rem zp ZP_WORD:3 22.0 +(word) divr16u::rem#10 rem zp ZP_WORD:3 4.0 +(word) divr16u::rem#11 rem zp ZP_WORD:3 1.608695652173913 +(word) divr16u::rem#2 rem zp ZP_WORD:3 22.0 +(word) divr16u::rem#4 rem zp ZP_WORD:3 4.0 +(word) divr16u::rem#5 rem zp ZP_WORD:3 24.0 +(word) divr16u::rem#6 rem zp ZP_WORD:3 11.0 (word) divr16u::return -(word) divr16u::return#0 return zp ZP_WORD:13 5.285714285714286 -(word) divr16u::return#2 return zp ZP_WORD:13 4.0 -(word) divr16u::return#3 return zp ZP_WORD:13 4.0 +(word) divr16u::return#0 return zp ZP_WORD:19 6.166666666666666 +(word) divr16u::return#2 return zp ZP_WORD:19 4.0 +(word) divr16u::return#3 return zp ZP_WORD:19 4.0 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) -(word~) lin16u_gen::$5 $5 zp ZP_WORD:7 22.0 +(word~) lin16u_gen::$5 $5 zp ZP_WORD:15 22.0 (label) lin16u_gen::@1 (label) lin16u_gen::@3 (label) lin16u_gen::@4 (label) lin16u_gen::@return (word) lin16u_gen::ampl -(const word) lin16u_gen::ampl#0 ampl = (const word) lin16u_gen::max#0-(const word) lin16u_gen::min#0 +(word) lin16u_gen::ampl#0 ampl zp ZP_WORD:3 2.0 (word) lin16u_gen::i (word) lin16u_gen::i#1 i zp ZP_WORD:5 16.5 (word) lin16u_gen::i#2 i zp ZP_WORD:5 4.4 (word) lin16u_gen::length -(const word) lin16u_gen::length#0 length = (byte/signed byte/word/signed word/dword/signed dword) 20 +(word) lin16u_gen::length#2 length zp ZP_WORD:7 0.7142857142857143 (word*) lin16u_gen::lintab -(word*) lin16u_gen::lintab#1 lintab zp ZP_WORD:3 7.333333333333333 -(word*) lin16u_gen::lintab#2 lintab zp ZP_WORD:3 8.25 +(word*) lin16u_gen::lintab#2 lintab zp ZP_WORD:13 7.333333333333333 +(word*) lin16u_gen::lintab#3 lintab zp ZP_WORD:13 8.75 +(word*) lin16u_gen::lintab#4 lintab zp ZP_WORD:13 0.14285714285714285 (word) lin16u_gen::max -(const word) lin16u_gen::max#0 max = (word/signed word/dword/signed dword) 29793 +(word) lin16u_gen::max#2 max zp ZP_WORD:3 2.0 (word) lin16u_gen::min -(const word) lin16u_gen::min#0 min = (word/signed word/dword/signed dword) 557 +(word) lin16u_gen::min#2 min zp ZP_WORD:5 0.3076923076923077 (dword) lin16u_gen::step -(dword) lin16u_gen::step#0 step zp ZP_DWORD:17 1.625 +(dword) lin16u_gen::step#0 step zp ZP_DWORD:23 1.4444444444444446 (word) lin16u_gen::stepf -(word) lin16u_gen::stepf#0 stepf zp ZP_WORD:13 4.0 +(word) lin16u_gen::stepf#0 stepf zp ZP_WORD:19 4.0 (word) lin16u_gen::stepi -(word) lin16u_gen::stepi#0 stepi zp ZP_WORD:15 0.8 +(word) lin16u_gen::stepi#0 stepi zp ZP_WORD:21 0.6666666666666666 (dword) lin16u_gen::val +(dword) lin16u_gen::val#0 val zp ZP_DWORD:9 4.0 (dword) lin16u_gen::val#1 val zp ZP_DWORD:9 5.5 -(dword) lin16u_gen::val#2 val zp ZP_DWORD:9 11.0 +(dword) lin16u_gen::val#2 val zp ZP_DWORD:9 11.666666666666666 (byte*) line_cursor -(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143 -(byte*) line_cursor#19 line_cursor zp ZP_WORD:3 1.4444444444444446 -(byte*) line_cursor#9 line_cursor zp ZP_WORD:3 204.0 +(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 11.344827586206897 +(byte*) line_cursor#11 line_cursor zp ZP_WORD:3 204.0 +(byte*) line_cursor#21 line_cursor zp ZP_WORD:3 15.0 (void()) main() (label) main::@1 +(label) main::@11 +(label) main::@12 +(label) main::@13 +(label) main::@14 +(label) main::@15 +(label) main::@16 +(label) main::@17 +(label) main::@18 +(label) main::@19 +(label) main::@2 +(label) main::@20 (label) main::@3 +(label) main::@4 (label) main::@5 (label) main::@6 (label) main::@7 @@ -4719,11 +5840,18 @@ FINAL SYMBOL TABLE (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 i zp ZP_BYTE:2 11.0 -(byte) main::i#2 i zp ZP_BYTE:2 4.888888888888889 -(word[20]) main::lintab -(const word[20]) main::lintab#0 lintab = { fill( 20, 0) } -(const string) main::str str = (string) " @" +(byte) main::i#1 i zp ZP_BYTE:2 16.5 +(byte) main::i#2 i zp ZP_BYTE:2 3.9285714285714284 +(word[20]) main::lintab1 +(const word[20]) main::lintab1#0 lintab1 = { fill( 20, 0) } +(word[20]) main::lintab2 +(const word[20]) main::lintab2#0 lintab2 = { fill( 20, 0) } +(const string) main::str str = (string) " @" +(const string) main::str1 str1 = (string) " @" +(const string) main::str2 str2 = (string) " @" +(const string) main::str3 str3 = (string) " @" +(const string) main::str4 str4 = (string) " @" +(const string) main::str5 str5 = (string) " @" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0 @@ -4732,7 +5860,7 @@ FINAL SYMBOL TABLE (byte) print_byte::b (byte) print_byte::b#0 reg byte x 4.0 (byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 22.0 +(byte) print_byte::b#2 reg byte x 11.0 (byte) print_byte::b#3 reg byte x 4.75 (byte[]) print_byte::hextab (const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef" @@ -4756,35 +5884,41 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:7 202.0 -(byte*) print_str::str#2 str zp ZP_WORD:7 101.0 +(byte*) print_str::str#0 str zp ZP_WORD:5 202.0 +(byte*) print_str::str#7 str zp ZP_WORD:5 101.5 +(byte*) print_str::str#9 str zp ZP_WORD:5 2.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp ZP_WORD:7 5.0 +(word) print_word::w#2 w zp ZP_WORD:5 22.0 +(word) print_word::w#3 w zp ZP_WORD:5 22.0 +(word) print_word::w#6 w zp ZP_WORD:5 8.666666666666666 (word) rem16u -(word) rem16u#1 rem16u zp ZP_WORD:5 0.8 +(word) rem16u#20 rem16u zp ZP_WORD:3 20.0 zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::lintab#2 lin16u_gen::lintab#1 divr16u::divisor#6 ] +zp ZP_WORD:3 [ line_cursor#11 line_cursor#21 line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::max#2 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 lin16u_gen::ampl#0 ] +zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 print_str::str#7 print_str::str#9 print_str::str#0 lin16u_gen::min#2 lin16u_gen::i#2 lin16u_gen::i#1 ] reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp ZP_WORD:5 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 lin16u_gen::i#2 lin16u_gen::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] -zp ZP_WORD:7 [ print_str::str#2 print_str::str#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 print_word::w#0 lin16u_gen::$5 ] -zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 ] -zp ZP_WORD:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] +zp ZP_WORD:7 [ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 lin16u_gen::length#2 ] +zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] +zp ZP_WORD:13 [ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] +zp ZP_WORD:15 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 lin16u_gen::$5 ] +zp ZP_WORD:17 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] +zp ZP_WORD:19 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -zp ZP_WORD:15 [ lin16u_gen::stepi#0 ] -zp ZP_DWORD:17 [ lin16u_gen::step#0 ] +zp ZP_WORD:21 [ lin16u_gen::stepi#0 ] +zp ZP_DWORD:23 [ lin16u_gen::step#0 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 14344 +Score: 13316 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -4792,9 +5926,9 @@ Score: 14344 .pc = $80d "Program" //SEG1 Global Constants & labels .label SCREEN = $400 - .label rem16u = 5 - .label char_cursor = 5 + .label char_cursor = 7 .label line_cursor = 3 + .label rem16u = 3 //SEG2 @begin //SEG3 [1] phi from @begin to @18 [phi:@begin->@18] //SEG4 @18 @@ -4806,90 +5940,270 @@ Score: 14344 //SEG9 main main: { .label i = 2 - //SEG10 [5] call lin16u_gen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [56] phi from main to lin16u_gen [phi:main->lin16u_gen] + //SEG10 [5] call lin16u_gen param-assignment [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] ) + //SEG11 [83] phi from main to lin16u_gen [phi:main->lin16u_gen] + //SEG12 [83] phi (word*) lin16u_gen::lintab#4 = (const word[20]) main::lintab1#0 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1 + lda #lintab1 + sta lin16u_gen.lintab+1 + //SEG13 [83] phi (word) rem16u#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->lin16u_gen#1] -- vwuz1=vbuc1 + lda #<0 + sta rem16u + sta rem16u+1 + //SEG14 [83] phi (word) lin16u_gen::length#2 = (byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main->lin16u_gen#2] -- vwuz1=vbuc1 + lda #<$14 + sta lin16u_gen.length + lda #>$14 + sta lin16u_gen.length+1 + //SEG15 [83] phi (word) lin16u_gen::min#2 = (word/signed word/dword/signed dword) 557 [phi:main->lin16u_gen#3] -- vwuz1=vwuc1 + lda #<$22d + sta lin16u_gen.min + lda #>$22d + sta lin16u_gen.min+1 + //SEG16 [83] phi (word) lin16u_gen::max#2 = (word/signed word/dword/signed dword) 29793 [phi:main->lin16u_gen#4] -- vwuz1=vwuc1 + lda #<$7461 + sta lin16u_gen.max + lda #>$7461 + sta lin16u_gen.max+1 jsr lin16u_gen - //SEG12 [6] phi from main to main::@3 [phi:main->main::@3] - //SEG13 main::@3 - //SEG14 [7] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG15 [50] phi from main::@3 to print_cls [phi:main::@3->print_cls] + //SEG17 [6] phi from main to main::@3 [phi:main->main::@3] + //SEG18 main::@3 + //SEG19 [7] call lin16u_gen param-assignment [ ] ( main:2 [ ] ) + //SEG20 [83] phi from main::@3 to lin16u_gen [phi:main::@3->lin16u_gen] + //SEG21 [83] phi (word*) lin16u_gen::lintab#4 = (const word[20]) main::lintab2#0 [phi:main::@3->lin16u_gen#0] -- pwuz1=pwuc1 + lda #lintab2 + sta lin16u_gen.lintab+1 + //SEG22 [83] phi (word) rem16u#20 = (word) divr16u::rem#11 [phi:main::@3->lin16u_gen#1] -- register_copy + //SEG23 [83] phi (word) lin16u_gen::length#2 = (byte/signed byte/word/signed word/dword/signed dword) 20 [phi:main::@3->lin16u_gen#2] -- vwuz1=vbuc1 + lda #<$14 + sta lin16u_gen.length + lda #>$14 + sta lin16u_gen.length+1 + //SEG24 [83] phi (word) lin16u_gen::min#2 = (word/signed word/dword/signed dword) 31179 [phi:main::@3->lin16u_gen#3] -- vwuz1=vwuc1 + lda #<$79cb + sta lin16u_gen.min + lda #>$79cb + sta lin16u_gen.min+1 + //SEG25 [83] phi (word) lin16u_gen::max#2 = (word/dword/signed dword) 63361 [phi:main::@3->lin16u_gen#4] -- vwuz1=vwuc1 + lda #<$f781 + sta lin16u_gen.max + lda #>$f781 + sta lin16u_gen.max+1 + jsr lin16u_gen + //SEG26 [8] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG27 main::@4 + //SEG28 [9] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG29 [77] phi from main::@4 to print_cls [phi:main::@4->print_cls] jsr print_cls - //SEG16 [8] phi from main::@3 to main::@1 [phi:main::@3->main::@1] - //SEG17 [8] phi (byte*) line_cursor#19 = (const byte*) SCREEN#0 [phi:main::@3->main::@1#0] -- pbuz1=pbuc1 + //SEG30 [10] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG31 main::@5 + //SEG32 [11] call print_str param-assignment [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) + //SEG33 [70] phi from main::@5 to print_str [phi:main::@5->print_str] + //SEG34 [70] phi (byte*) char_cursor#74 = (const byte*) SCREEN#0 [phi:main::@5->print_str#0] -- pbuz1=pbuc1 + lda #SCREEN + sta char_cursor+1 + //SEG35 [70] phi (byte*) print_str::str#9 = (const string) main::str [phi:main::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG36 [12] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG37 main::@6 + //SEG38 [13] call print_word param-assignment [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + //SEG39 [52] phi from main::@6 to print_word [phi:main::@6->print_word] + //SEG40 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 557 [phi:main::@6->print_word#0] -- vwuz1=vwuc1 + lda #<$22d + sta print_word.w + lda #>$22d + sta print_word.w+1 + jsr print_word + //SEG41 [14] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + //SEG42 main::@7 + //SEG43 [15] call print_str param-assignment [ char_cursor#2 ] ( main:2 [ char_cursor#2 ] ) + //SEG44 [70] phi from main::@7 to print_str [phi:main::@7->print_str] + //SEG45 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@7->print_str#0] -- register_copy + //SEG46 [70] phi (byte*) print_str::str#9 = (const string) main::str1 [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG47 [16] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG48 main::@8 + //SEG49 [17] call print_word param-assignment [ char_cursor#11 ] ( main:2 [ char_cursor#11 ] ) + //SEG50 [52] phi from main::@8 to print_word [phi:main::@8->print_word] + //SEG51 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 31179 [phi:main::@8->print_word#0] -- vwuz1=vwuc1 + lda #<$79cb + sta print_word.w + lda #>$79cb + sta print_word.w+1 + jsr print_word + //SEG52 [18] phi from main::@8 to main::@9 [phi:main::@8->main::@9] + //SEG53 main::@9 + //SEG54 [19] call print_ln param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG55 [47] phi from main::@9 to print_ln [phi:main::@9->print_ln] + //SEG56 [47] phi (byte*) line_cursor#21 = (const byte*) SCREEN#0 [phi:main::@9->print_ln#0] -- pbuz1=pbuc1 lda #SCREEN sta line_cursor+1 - //SEG18 [8] phi (byte*) char_cursor#47 = (const byte*) SCREEN#0 [phi:main::@3->main::@1#1] -- pbuz1=pbuc1 - lda #SCREEN - sta char_cursor+1 - //SEG19 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@3->main::@1#2] -- vbuz1=vbuc1 + jsr print_ln + //SEG57 [20] phi from main::@9 to main::@1 [phi:main::@9->main::@1] + //SEG58 [20] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@9->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG20 main::@1 + //SEG59 [20] phi from main::@16 to main::@1 [phi:main::@16->main::@1] + //SEG60 [20] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@16->main::@1#0] -- register_copy + //SEG61 main::@1 b1: - //SEG21 [9] (byte) print_byte::b#2 ← (byte) main::i#2 [ main::i#2 char_cursor#47 line_cursor#19 print_byte::b#2 ] ( main:2 [ main::i#2 char_cursor#47 line_cursor#19 print_byte::b#2 ] ) -- vbuxx=vbuz1 + //SEG62 [21] (byte) print_byte::b#2 ← (byte) main::i#2 [ main::i#2 print_byte::b#2 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 line_cursor#1 ] ) -- vbuxx=vbuz1 ldx i - //SEG22 [10] call print_byte param-assignment [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG23 [31] phi from main::@1 to print_byte [phi:main::@1->print_byte] - //SEG24 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#47 [phi:main::@1->print_byte#0] -- register_copy - //SEG25 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy - jsr print_byte - //SEG26 [11] phi from main::@1 to main::@5 [phi:main::@1->main::@5] - //SEG27 main::@5 - //SEG28 [12] call print_str param-assignment [ main::i#2 line_cursor#19 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#2 ] ) - //SEG29 [43] phi from main::@5 to print_str [phi:main::@5->print_str] - jsr print_str - //SEG30 main::@6 - //SEG31 [13] (word) print_word::w#0 ← *((const word[20]) main::lintab#0 + (byte) main::i#2) [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i - lda lintab,y - sta print_word.w - lda lintab+1,y - sta print_word.w+1 - //SEG32 [14] call print_word param-assignment [ main::i#2 line_cursor#19 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - jsr print_word - //SEG33 [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - //SEG34 main::@7 - //SEG35 [16] call print_ln param-assignment [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) - //SEG36 [21] phi from main::@7 to print_ln [phi:main::@7->print_ln] - jsr print_ln - //SEG37 main::@8 - //SEG38 [17] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 - lda #2 - clc - adc i - sta i - //SEG39 [18] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@9 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_lt_vbuc1_then_la1 - cmp #$14*2 - bcc b9 - //SEG40 main::@return - //SEG41 [19] return [ ] ( main:2 [ ] ) - rts - //SEG42 main::@9 - b9: - //SEG43 [20] (byte*~) char_cursor#51 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#51 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#51 line_cursor#1 ] ) -- pbuz1=pbuz2 + //SEG63 [22] (byte*~) char_cursor#77 ← (byte*) line_cursor#1 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ( main:2 [ main::i#2 print_byte::b#2 char_cursor#77 line_cursor#1 ] ) -- pbuz1=pbuz2 lda line_cursor sta char_cursor lda line_cursor+1 sta char_cursor+1 - //SEG44 [8] phi from main::@9 to main::@1 [phi:main::@9->main::@1] - //SEG45 [8] phi (byte*) line_cursor#19 = (byte*) line_cursor#1 [phi:main::@9->main::@1#0] -- register_copy - //SEG46 [8] phi (byte*) char_cursor#47 = (byte*~) char_cursor#51 [phi:main::@9->main::@1#1] -- register_copy - //SEG47 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@9->main::@1#2] -- register_copy - jmp b1 - str: .text " @" - lintab: .fill $28, 0 + //SEG64 [23] call print_byte param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG65 [58] phi from main::@1 to print_byte [phi:main::@1->print_byte] + //SEG66 [58] phi (byte*) char_cursor#69 = (byte*~) char_cursor#77 [phi:main::@1->print_byte#0] -- register_copy + //SEG67 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#2 [phi:main::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG68 [24] phi from main::@1 to main::@11 [phi:main::@1->main::@11] + //SEG69 main::@11 + //SEG70 [25] call print_str param-assignment [ main::i#2 line_cursor#1 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#2 ] ) + //SEG71 [70] phi from main::@11 to print_str [phi:main::@11->print_str] + //SEG72 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@11->print_str#0] -- register_copy + //SEG73 [70] phi (byte*) print_str::str#9 = (const string) main::str2 [phi:main::@11->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG74 main::@12 + //SEG75 [26] (word) print_word::w#2 ← *((const word[20]) main::lintab1#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#2 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy i + lda lintab1,y + sta print_word.w + lda lintab1+1,y + sta print_word.w+1 + //SEG76 [27] call print_word param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG77 [52] phi from main::@12 to print_word [phi:main::@12->print_word] + //SEG78 [52] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:main::@12->print_word#0] -- register_copy + jsr print_word + //SEG79 [28] phi from main::@12 to main::@13 [phi:main::@12->main::@13] + //SEG80 main::@13 + //SEG81 [29] call print_str param-assignment [ main::i#2 line_cursor#1 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#2 ] ) + //SEG82 [70] phi from main::@13 to print_str [phi:main::@13->print_str] + //SEG83 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@13->print_str#0] -- register_copy + //SEG84 [70] phi (byte*) print_str::str#9 = (const string) main::str3 [phi:main::@13->print_str#1] -- pbuz1=pbuc1 + lda #str3 + sta print_str.str+1 + jsr print_str + //SEG85 main::@14 + //SEG86 [30] (word) print_word::w#3 ← *((const word[20]) main::lintab2#0 + (byte) main::i#2) [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2 [ main::i#2 line_cursor#1 print_word::w#3 char_cursor#2 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy i + lda lintab2,y + sta print_word.w + lda lintab2+1,y + sta print_word.w+1 + //SEG87 [31] call print_word param-assignment [ main::i#2 line_cursor#1 char_cursor#11 ] ( main:2 [ main::i#2 line_cursor#1 char_cursor#11 ] ) + //SEG88 [52] phi from main::@14 to print_word [phi:main::@14->print_word] + //SEG89 [52] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:main::@14->print_word#0] -- register_copy + jsr print_word + //SEG90 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] + //SEG91 main::@15 + //SEG92 [33] call print_ln param-assignment [ main::i#2 line_cursor#1 ] ( main:2 [ main::i#2 line_cursor#1 ] ) + //SEG93 [47] phi from main::@15 to print_ln [phi:main::@15->print_ln] + //SEG94 [47] phi (byte*) line_cursor#21 = (byte*) line_cursor#1 [phi:main::@15->print_ln#0] -- register_copy + jsr print_ln + //SEG95 main::@16 + //SEG96 [34] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + lda #2 + clc + adc i + sta i + //SEG97 [35] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20*(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@1 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + cmp #$14*2 + bcc b1 + //SEG98 main::@2 + //SEG99 [36] (byte*~) char_cursor#85 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#85 ] ( main:2 [ line_cursor#1 char_cursor#85 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG100 [37] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + //SEG101 [70] phi from main::@2 to print_str [phi:main::@2->print_str] + //SEG102 [70] phi (byte*) char_cursor#74 = (byte*~) char_cursor#85 [phi:main::@2->print_str#0] -- register_copy + //SEG103 [70] phi (byte*) print_str::str#9 = (const string) main::str4 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + lda #str4 + sta print_str.str+1 + jsr print_str + //SEG104 [38] phi from main::@2 to main::@17 [phi:main::@2->main::@17] + //SEG105 main::@17 + //SEG106 [39] call print_word param-assignment [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + //SEG107 [52] phi from main::@17 to print_word [phi:main::@17->print_word] + //SEG108 [52] phi (word) print_word::w#6 = (word/signed word/dword/signed dword) 29793 [phi:main::@17->print_word#0] -- vwuz1=vwuc1 + lda #<$7461 + sta print_word.w + lda #>$7461 + sta print_word.w+1 + jsr print_word + //SEG109 [40] phi from main::@17 to main::@18 [phi:main::@17->main::@18] + //SEG110 main::@18 + //SEG111 [41] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2 [ line_cursor#1 char_cursor#2 ] ) + //SEG112 [70] phi from main::@18 to print_str [phi:main::@18->print_str] + //SEG113 [70] phi (byte*) char_cursor#74 = (byte*) char_cursor#11 [phi:main::@18->print_str#0] -- register_copy + //SEG114 [70] phi (byte*) print_str::str#9 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 + lda #str5 + sta print_str.str+1 + jsr print_str + //SEG115 [42] phi from main::@18 to main::@19 [phi:main::@18->main::@19] + //SEG116 main::@19 + //SEG117 [43] call print_word param-assignment [ line_cursor#1 char_cursor#11 ] ( main:2 [ line_cursor#1 char_cursor#11 ] ) + //SEG118 [52] phi from main::@19 to print_word [phi:main::@19->print_word] + //SEG119 [52] phi (word) print_word::w#6 = (word/dword/signed dword) 63361 [phi:main::@19->print_word#0] -- vwuz1=vwuc1 + lda #<$f781 + sta print_word.w + lda #>$f781 + sta print_word.w+1 + jsr print_word + //SEG120 [44] phi from main::@19 to main::@20 [phi:main::@19->main::@20] + //SEG121 main::@20 + //SEG122 [45] call print_ln param-assignment [ ] ( main:2 [ ] ) + //SEG123 [47] phi from main::@20 to print_ln [phi:main::@20->print_ln] + //SEG124 [47] phi (byte*) line_cursor#21 = (byte*) line_cursor#1 [phi:main::@20->print_ln#0] -- register_copy + jsr print_ln + //SEG125 main::@return + //SEG126 [46] return [ ] ( main:2 [ ] ) + rts + str: .text " @" + str1: .text " @" + str2: .text " @" + str3: .text " @" + str4: .text " @" + str5: .text " @" + lintab1: .fill $28, 0 + lintab2: .fill $28, 0 } -//SEG48 print_ln +//SEG127 print_ln print_ln: { - //SEG49 [22] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG50 [22] phi (byte*) line_cursor#9 = (byte*) line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG51 print_ln::@1 + //SEG128 [48] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG129 [48] phi (byte*) line_cursor#11 = (byte*) line_cursor#21 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG130 print_ln::@1 b1: - //SEG52 [23] (byte*) line_cursor#1 ← (byte*) line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG131 [49] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -4897,7 +6211,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG53 [24] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG132 [50] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::print_ln:19 [ line_cursor#1 char_cursor#11 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_ln:45 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1 @@ -4906,214 +6220,224 @@ print_ln: { cmp char_cursor bcc b1 !: - //SEG54 print_ln::@return - //SEG55 [25] return [ line_cursor#1 ] ( main:2::print_ln:16 [ main::i#2 line_cursor#1 ] ) + //SEG133 print_ln::@return + //SEG134 [51] return [ line_cursor#1 ] ( main:2::print_ln:19 [ line_cursor#1 ] main:2::print_ln:33 [ main::i#2 line_cursor#1 ] main:2::print_ln:45 [ line_cursor#1 ] ) rts } -//SEG56 print_word +//SEG135 print_word print_word: { - .label w = 7 - //SEG57 [26] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#0 char_cursor#2 ] ) -- vbuxx=_hi_vwuz1 + .label w = 5 + //SEG136 [53] (byte) print_byte::b#0 ← > (word) print_word::w#6 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] ( main:2::print_word:13 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:17 [ print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:27 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:31 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:39 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] main:2::print_word:43 [ line_cursor#1 print_word::w#6 print_byte::b#0 char_cursor#2 ] ) -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG58 [27] call print_byte param-assignment [ print_word::w#0 char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] ) - //SEG59 [31] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG60 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy - //SEG61 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG137 [54] call print_byte param-assignment [ char_cursor#11 print_word::w#6 ] ( main:2::print_word:13 [ char_cursor#11 print_word::w#6 ] main:2::print_word:17 [ char_cursor#11 print_word::w#6 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_word::w#6 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_word::w#6 ] ) + //SEG138 [58] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG139 [58] phi (byte*) char_cursor#69 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG140 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG62 print_word::@1 - //SEG63 [28] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 + //SEG141 print_word::@1 + //SEG142 [55] (byte) print_byte::b#1 ← < (word) print_word::w#6 [ char_cursor#11 print_byte::b#1 ] ( main:2::print_word:13 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:17 [ char_cursor#11 print_byte::b#1 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 lda w tax - //SEG64 [29] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG65 [31] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG66 [31] phi (byte*) char_cursor#45 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG67 [31] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG143 [56] call print_byte param-assignment [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) + //SEG144 [58] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG145 [58] phi (byte*) char_cursor#69 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG146 [58] phi (byte) print_byte::b#3 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG68 print_word::@return - //SEG69 [30] return [ char_cursor#11 ] ( main:2::print_word:14 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG147 print_word::@return + //SEG148 [57] return [ char_cursor#11 ] ( main:2::print_word:13 [ char_cursor#11 ] main:2::print_word:17 [ char_cursor#11 ] main:2::print_word:27 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43 [ line_cursor#1 char_cursor#11 ] ) rts } -//SEG70 print_byte +//SEG149 print_byte print_byte: { - //SEG71 [32] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#45 print_byte::$0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_byte::$0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 + //SEG150 [59] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG72 [33] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#45 print_char::ch#0 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#45 print_char::ch#0 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#45 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG151 [60] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:13::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:17::print_byte:56 [ print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 print_byte::b#3 char_cursor#69 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda hextab,y - //SEG73 [34] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::b#3 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::b#3 ] ) - //SEG74 [39] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG75 [39] phi (byte*) char_cursor#32 = (byte*) char_cursor#45 [phi:print_byte->print_char#0] -- register_copy - //SEG76 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG152 [61] call print_char param-assignment [ char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::b#3 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::b#3 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::b#3 ] ) + //SEG153 [66] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG154 [66] phi (byte*) char_cursor#44 = (byte*) char_cursor#69 [phi:print_byte->print_char#0] -- register_copy + //SEG155 [66] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG77 print_byte::@1 - //SEG78 [35] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_byte::$2 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG156 print_byte::@1 + //SEG157 [62] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_byte::$2 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_byte::$2 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG79 [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 print_char::ch#1 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG158 [63] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 print_char::ch#1 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 print_char::ch#1 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda hextab,y - //SEG80 [37] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) - //SEG81 [39] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG82 [39] phi (byte*) char_cursor#32 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG83 [39] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG159 [64] call print_char param-assignment [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) + //SEG160 [66] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG161 [66] phi (byte*) char_cursor#44 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG162 [66] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG84 print_byte::@return - //SEG85 [38] return [ char_cursor#11 ] ( main:2::print_byte:10 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG163 print_byte::@return + //SEG164 [65] return [ char_cursor#11 ] ( main:2::print_byte:23 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56 [ char_cursor#11 ] main:2::print_word:17::print_byte:56 [ char_cursor#11 ] main:2::print_word:27::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56 [ line_cursor#1 char_cursor#11 ] ) rts hextab: .text "0123456789abcdef" } -//SEG86 print_char +//SEG165 print_char print_char: { - //SEG87 [40] *((byte*) char_cursor#32) ← (byte) print_char::ch#2 [ char_cursor#32 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#32 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#32 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#32 ] ) -- _deref_pbuz1=vbuaa + //SEG166 [67] *((byte*) char_cursor#44) ← (byte) print_char::ch#2 [ char_cursor#44 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#44 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#44 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#44 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#44 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#44 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#44 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (char_cursor),y - //SEG88 [41] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#32 [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + //SEG167 [68] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#44 [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG89 print_char::@return - //SEG90 [42] return [ char_cursor#11 ] ( main:2::print_byte:10::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:34 [ main::i#2 line_cursor#19 print_word::w#0 print_byte::b#3 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:34 [ main::i#2 line_cursor#19 print_byte::b#3 char_cursor#11 ] main:2::print_byte:10::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] main:2::print_word:14::print_byte:27::print_char:37 [ main::i#2 line_cursor#19 print_word::w#0 char_cursor#11 ] main:2::print_word:14::print_byte:29::print_char:37 [ main::i#2 line_cursor#19 char_cursor#11 ] ) + //SEG168 print_char::@return + //SEG169 [69] return [ char_cursor#11 ] ( main:2::print_byte:23::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:61 [ print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:61 [ main::i#2 line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:61 [ line_cursor#1 print_word::w#6 print_byte::b#3 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:61 [ print_byte::b#3 char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:61 [ main::i#2 line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:61 [ line_cursor#1 print_byte::b#3 char_cursor#11 ] main:2::print_byte:23::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:13::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:17::print_byte:54::print_char:64 [ print_word::w#6 char_cursor#11 ] main:2::print_word:27::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:31::print_byte:54::print_char:64 [ main::i#2 line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:39::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:43::print_byte:54::print_char:64 [ line_cursor#1 print_word::w#6 char_cursor#11 ] main:2::print_word:13::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:17::print_byte:56::print_char:64 [ char_cursor#11 ] main:2::print_word:27::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:31::print_byte:56::print_char:64 [ main::i#2 line_cursor#1 char_cursor#11 ] main:2::print_word:39::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] main:2::print_word:43::print_byte:56::print_char:64 [ line_cursor#1 char_cursor#11 ] ) rts } -//SEG91 print_str +//SEG170 print_str print_str: { - .label str = 7 - //SEG92 [44] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] - //SEG93 [44] phi (byte*) char_cursor#2 = (byte*) char_cursor#11 [phi:print_str->print_str::@1#0] -- register_copy - //SEG94 [44] phi (byte*) print_str::str#2 = (const string) main::str [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 - lda #main.str - sta str+1 - //SEG95 print_str::@1 + .label str = 5 + //SEG171 [71] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG172 [71] phi (byte*) char_cursor#2 = (byte*) char_cursor#74 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG173 [71] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG174 print_str::@1 b1: - //SEG96 [45] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG175 [72] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG97 print_str::@return - //SEG98 [46] return [ char_cursor#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 ] ) + //SEG176 print_str::@return + //SEG177 [73] return [ char_cursor#2 ] ( main:2::print_str:11 [ char_cursor#2 ] main:2::print_str:15 [ char_cursor#2 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 ] ) rts - //SEG99 print_str::@2 + //SEG178 print_str::@2 b2: - //SEG100 [47] *((byte*) char_cursor#2) ← *((byte*) print_str::str#2) [ char_cursor#2 print_str::str#2 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 char_cursor#2 print_str::str#2 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG179 [74] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::print_str:11 [ char_cursor#2 print_str::str#7 ] main:2::print_str:15 [ char_cursor#2 print_str::str#7 ] main:2::print_str:25 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:29 [ main::i#2 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:37 [ line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::print_str:41 [ line_cursor#1 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (char_cursor),y - //SEG101 [48] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#2 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#2 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG180 [75] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#7 char_cursor#1 ] main:2::print_str:15 [ print_str::str#7 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG102 [49] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 line_cursor#19 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG181 [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:11 [ print_str::str#0 char_cursor#1 ] main:2::print_str:15 [ print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:29 [ main::i#2 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:37 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::print_str:41 [ line_cursor#1 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: - //SEG103 [44] phi from print_str::@2 to print_str::@1 [phi:print_str::@2->print_str::@1] - //SEG104 [44] phi (byte*) char_cursor#2 = (byte*) char_cursor#1 [phi:print_str::@2->print_str::@1#0] -- register_copy - //SEG105 [44] phi (byte*) print_str::str#2 = (byte*) print_str::str#0 [phi:print_str::@2->print_str::@1#1] -- register_copy jmp b1 } -//SEG106 print_cls +//SEG182 print_cls print_cls: { .label sc = 3 - //SEG107 [51] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG108 [51] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG183 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG184 [78] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG109 [51] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG110 [51] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG111 print_cls::@1 + //SEG185 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG186 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG187 print_cls::@1 b1: - //SEG112 [52] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG188 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG113 [53] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG189 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG114 [54] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG190 [81] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bne b1 lda sc cmp #divr16u] - //SEG120 [73] phi (word) divr16u::divisor#6 = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen->divr16u#0] -- vwuz1=vbuc1 - lda #length-1 + lda length+1 + sbc #0 sta divr16u.divisor+1 - //SEG121 [73] phi (word) divr16u::dividend#5 = (const word) lin16u_gen::ampl#0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vwuc1 - lda #ampl + lda ampl+1 sta divr16u.dividend+1 - //SEG122 [73] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 + //SEG197 [87] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] ) + //SEG198 [105] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u] + //SEG199 [105] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:lin16u_gen->divr16u#0] -- register_copy + //SEG200 [105] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:lin16u_gen->divr16u#1] -- register_copy + //SEG201 [105] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG123 [58] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#2 rem16u#1 ] ) - // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:13 - //SEG124 lin16u_gen::@3 - //SEG125 [59] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#1 ] ) -- vwuz1=vwuz2 + //SEG202 [88] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#2 ] ) + // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:19 + //SEG203 lin16u_gen::@3 + //SEG204 [89] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 ] ) -- vwuz1=vwuz2 lda divr16u.return sta stepi lda divr16u.return+1 sta stepi+1 - //SEG126 [60] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ) - // (word) divr16u::rem#4 = (word) rem16u#1 // register copy zp ZP_WORD:5 - //SEG127 [61] call divr16u param-assignment [ divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 lin16u_gen::stepi#0 ] ) - //SEG128 [73] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] - //SEG129 [73] phi (word) divr16u::divisor#6 = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1 - lda #length-1 + lda length+1 + sbc #0 sta divr16u.divisor+1 - //SEG130 [73] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 + //SEG206 [91] (word) divr16u::rem#4 ← (word) divr16u::rem#11 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ) + // (word) divr16u::rem#4 = (word) divr16u::rem#11 // register copy zp ZP_WORD:3 + //SEG207 [92] call divr16u param-assignment [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 lin16u_gen::stepi#0 ] ) + //SEG208 [105] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u] + //SEG209 [105] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:lin16u_gen::@3->divr16u#0] -- register_copy + //SEG210 [105] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@3->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.dividend sta divr16u.dividend+1 - //SEG131 [73] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy + //SEG211 [105] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#2] -- register_copy jsr divr16u - //SEG132 [62] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] ) - // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:13 - //SEG133 lin16u_gen::@4 - //SEG134 [63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) - // (word) lin16u_gen::stepf#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:13 - //SEG135 [64] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 ] ) -- vduz1=vwuz2_dword_vwuz3 + //SEG212 [93] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 divr16u::return#3 ] ) + // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:19 + //SEG213 lin16u_gen::@4 + //SEG214 [94] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) + // (word) lin16u_gen::stepf#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:19 + //SEG215 [95] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 ] ) -- vduz1=vwuz2_dword_vwuz3 lda stepi sta step+2 lda stepi+1 @@ -5122,44 +6446,40 @@ lin16u_gen: { sta step lda stepf+1 sta step+1 - //SEG136 [65] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] - //SEG137 [65] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 + //SEG216 [96] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#2 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#0 ] ) -- vduz1=vwuz2_dword_vbuc1 + lda #<0 + sta val + sta val+1 + lda min + sta val+2 + lda min+1 + sta val+3 + //SEG217 [97] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1] + //SEG218 [97] phi (word) lin16u_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG138 [65] phi (word*) lin16u_gen::lintab#2 = (const word[20]) main::lintab#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- pwuz1=pwuc1 - lda #main.lintab - sta lintab+1 - //SEG139 [65] phi (dword) lin16u_gen::val#2 = (const word) lin16u_gen::min#0*(dword/signed dword) 65536+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vduz1=vduc1 - lda #min*$10000+0 - sta val+1 - lda #>$10 - sta val+2 - lda #>min*$10000+0>>$10 - sta val+3 - //SEG140 [65] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] - //SEG141 [65] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy - //SEG142 [65] phi (word*) lin16u_gen::lintab#2 = (word*) lin16u_gen::lintab#1 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy - //SEG143 [65] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy - //SEG144 lin16u_gen::@1 + //SEG219 [97] phi (word*) lin16u_gen::lintab#3 = (word*) lin16u_gen::lintab#4 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy + //SEG220 [97] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- register_copy + //SEG221 [97] phi from lin16u_gen::@1 to lin16u_gen::@1 [phi:lin16u_gen::@1->lin16u_gen::@1] + //SEG222 [97] phi (word) lin16u_gen::i#2 = (word) lin16u_gen::i#1 [phi:lin16u_gen::@1->lin16u_gen::@1#0] -- register_copy + //SEG223 [97] phi (word*) lin16u_gen::lintab#3 = (word*) lin16u_gen::lintab#2 [phi:lin16u_gen::@1->lin16u_gen::@1#1] -- register_copy + //SEG224 [97] phi (dword) lin16u_gen::val#2 = (dword) lin16u_gen::val#1 [phi:lin16u_gen::@1->lin16u_gen::@1#2] -- register_copy + //SEG225 lin16u_gen::@1 b1: - //SEG145 [66] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::$5 ] ) -- vwuz1=_hi_vduz2 + //SEG226 [98] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::$5 ] ) -- vwuz1=_hi_vduz2 lda val+2 sta _5 lda val+3 sta _5+1 - //SEG146 [67] *((word*) lin16u_gen::lintab#2) ← (word~) lin16u_gen::$5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#2 lin16u_gen::i#2 ] ) -- _deref_pwuz1=vwuz2 + //SEG227 [99] *((word*) lin16u_gen::lintab#3) ← (word~) lin16u_gen::$5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#3 lin16u_gen::i#2 ] ) -- _deref_pwuz1=vwuz2 ldy #0 lda _5 sta (lintab),y iny lda _5+1 sta (lintab),y - //SEG147 [68] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::lintab#2 lin16u_gen::i#2 lin16u_gen::val#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG228 [100] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::lintab#3 lin16u_gen::i#2 lin16u_gen::val#1 ] ) -- vduz1=vduz1_plus_vduz2 lda val clc adc step @@ -5173,7 +6493,7 @@ lin16u_gen: { lda val+3 adc step+3 sta val+3 - //SEG148 [69] (word*) lin16u_gen::lintab#1 ← (word*) lin16u_gen::lintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#1 ] ) -- pwuz1=pwuz1_plus_vbuc1 + //SEG229 [101] (word*) lin16u_gen::lintab#2 ← (word*) lin16u_gen::lintab#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#2 ] ) -- pwuz1=pwuz1_plus_vbuc1 clc lda lintab adc #<2 @@ -5181,73 +6501,73 @@ lin16u_gen: { lda lintab+1 adc #>2 sta lintab+1 - //SEG149 [70] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + //SEG230 [102] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG150 [71] if((word) lin16u_gen::i#1<(const word) lin16u_gen::length#0) goto lin16u_gen::@1 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#1 lin16u_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + //SEG231 [103] if((word) lin16u_gen::i#1<(word) lin16u_gen::length#2) goto lin16u_gen::@1 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#2 divr16u::rem#11 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#2 lin16u_gen::i#1 ] ) -- vwuz1_lt_vwuz2_then_la1 lda i+1 - cmp #>length + cmp length+1 bcc b1 bne !+ lda i - cmp #divr16u::@1] - //SEG155 [74] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + .label rem = 3 + .label dividend = $11 + .label quotient = $13 + .label return = $13 + .label divisor = $f + //SEG235 [106] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG236 [106] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG156 [74] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG237 [106] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG157 [74] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG158 [74] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG159 [74] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG160 [74] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG161 [74] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG162 [74] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG163 [74] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG164 divr16u::@1 + //SEG238 [106] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG239 [106] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG240 [106] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG241 [106] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG242 [106] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG243 [106] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG244 [106] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG245 divr16u::@1 b1: - //SEG165 [75] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 + //SEG246 [107] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG166 [76] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuaa=_hi_vwuz1 + //SEG247 [108] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG167 [77] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuaa=vbuaa_band_vbuc1 + //SEG248 [109] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG168 [78] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuaa_eq_0_then_la1 + //SEG249 [110] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG169 divr16u::@4 - //SEG170 [79] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 + //SEG250 divr16u::@4 + //SEG251 [111] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG171 [80] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG172 [80] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG173 divr16u::@2 + //SEG252 [112] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG253 [112] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG254 divr16u::@2 b2: - //SEG174 [81] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) -- vwuz1=vwuz1_rol_1 + //SEG255 [113] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG175 [82] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 + //SEG256 [114] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG176 [83] 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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 + //SEG257 [115] 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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3 @@ -5256,13 +6576,13 @@ divr16u: { cmp divisor bcc b3 !: - //SEG177 divr16u::@5 - //SEG178 [84] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG258 divr16u::@5 + //SEG259 [116] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG179 [85] (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::lin16u_gen:5::divr16u:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) -- vwuz1=vwuz1_minus_vwuz2 + //SEG260 [117] (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::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -5270,21 +6590,18 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG180 [86] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG181 [86] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG182 [86] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG183 divr16u::@3 + //SEG261 [118] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG262 [118] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG263 [118] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG264 divr16u::@3 b3: - //SEG184 [87] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG265 [119] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG185 [88] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG266 [120] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG186 divr16u::@6 - //SEG187 [89] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) - // (word) rem16u#1 = (word) divr16u::rem#11 // register copy zp ZP_WORD:5 - //SEG188 divr16u::@return - //SEG189 [90] return [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) + //SEG267 divr16u::@return + //SEG268 [121] return [ divr16u::rem#11 divr16u::return#0 ] ( main:2::lin16u_gen:5::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:87 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:5::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] main:2::lin16u_gen:7::divr16u:92 [ lin16u_gen::min#2 lin16u_gen::length#2 lin16u_gen::lintab#4 lin16u_gen::stepi#0 divr16u::rem#11 divr16u::return#0 ] ) rts } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/linegen.sym b/src/test/java/dk/camelot64/kickc/test/ref/linegen.sym index a59699f4f..7c745a783 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/linegen.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/linegen.sym @@ -4,13 +4,14 @@ (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) char_cursor -(byte*) char_cursor#1 char_cursor zp ZP_WORD:5 101.0 -(byte*) char_cursor#11 char_cursor zp ZP_WORD:5 5.449999999999998 -(byte*) char_cursor#2 char_cursor zp ZP_WORD:5 43.85714285714286 -(byte*) char_cursor#32 char_cursor zp ZP_WORD:5 4.0 -(byte*) char_cursor#45 char_cursor zp ZP_WORD:5 5.666666666666667 -(byte*) char_cursor#47 char_cursor zp ZP_WORD:5 11.0 -(byte*~) char_cursor#51 char_cursor zp ZP_WORD:5 22.0 +(byte*) char_cursor#1 char_cursor zp ZP_WORD:7 101.0 +(byte*) char_cursor#11 char_cursor zp ZP_WORD:7 4.586206896551724 +(byte*) char_cursor#2 char_cursor zp ZP_WORD:7 17.055555555555554 +(byte*) char_cursor#44 char_cursor zp ZP_WORD:7 4.0 +(byte*) char_cursor#69 char_cursor zp ZP_WORD:7 5.666666666666667 +(byte*) char_cursor#74 char_cursor zp ZP_WORD:7 30.0 +(byte*~) char_cursor#77 char_cursor zp ZP_WORD:7 22.0 +(byte*~) char_cursor#85 char_cursor zp ZP_WORD:7 4.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) (byte~) divr16u::$1 reg byte a 22.0 (byte~) divr16u::$2 reg byte a 22.0 @@ -19,70 +20,86 @@ (label) divr16u::@3 (label) divr16u::@4 (label) divr16u::@5 -(label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend -(word) divr16u::dividend#0 dividend zp ZP_WORD:7 2.75 -(word) divr16u::dividend#3 dividend zp ZP_WORD:7 5.0 -(word) divr16u::dividend#5 dividend zp ZP_WORD:7 2.0 +(word) divr16u::dividend#0 dividend zp ZP_WORD:17 2.75 +(word) divr16u::dividend#1 dividend zp ZP_WORD:17 4.0 +(word) divr16u::dividend#3 dividend zp ZP_WORD:17 5.0 +(word) divr16u::dividend#5 dividend zp ZP_WORD:17 4.0 (word) divr16u::divisor -(word) divr16u::divisor#6 divisor zp ZP_WORD:3 1.375 +(word) divr16u::divisor#0 divisor zp ZP_WORD:15 2.0 +(word) divr16u::divisor#1 divisor zp ZP_WORD:15 2.0 +(word) divr16u::divisor#6 divisor zp ZP_WORD:15 1.625 (byte) divr16u::i (byte) divr16u::i#1 reg byte x 16.5 (byte) divr16u::i#2 reg byte x 1.6923076923076923 (word) divr16u::quotient -(word) divr16u::quotient#1 quotient zp ZP_WORD:13 16.5 -(word) divr16u::quotient#2 quotient zp ZP_WORD:13 11.0 -(word) divr16u::quotient#3 quotient zp ZP_WORD:13 2.75 +(word) divr16u::quotient#1 quotient zp ZP_WORD:19 16.5 +(word) divr16u::quotient#2 quotient zp ZP_WORD:19 11.0 +(word) divr16u::quotient#3 quotient zp ZP_WORD:19 2.75 (word) divr16u::rem -(word) divr16u::rem#0 rem zp ZP_WORD:5 8.25 -(word) divr16u::rem#1 rem zp ZP_WORD:5 22.0 -(word) divr16u::rem#10 rem zp ZP_WORD:5 4.0 -(word) divr16u::rem#11 rem zp ZP_WORD:5 11.666666666666666 -(word) divr16u::rem#2 rem zp ZP_WORD:5 22.0 -(word) divr16u::rem#4 rem zp ZP_WORD:5 4.0 -(word) divr16u::rem#5 rem zp ZP_WORD:5 24.0 -(word) divr16u::rem#6 rem zp ZP_WORD:5 11.0 +(word) divr16u::rem#0 rem zp ZP_WORD:3 8.25 +(word) divr16u::rem#1 rem zp ZP_WORD:3 22.0 +(word) divr16u::rem#10 rem zp ZP_WORD:3 4.0 +(word) divr16u::rem#11 rem zp ZP_WORD:3 1.608695652173913 +(word) divr16u::rem#2 rem zp ZP_WORD:3 22.0 +(word) divr16u::rem#4 rem zp ZP_WORD:3 4.0 +(word) divr16u::rem#5 rem zp ZP_WORD:3 24.0 +(word) divr16u::rem#6 rem zp ZP_WORD:3 11.0 (word) divr16u::return -(word) divr16u::return#0 return zp ZP_WORD:13 5.285714285714286 -(word) divr16u::return#2 return zp ZP_WORD:13 4.0 -(word) divr16u::return#3 return zp ZP_WORD:13 4.0 +(word) divr16u::return#0 return zp ZP_WORD:19 6.166666666666666 +(word) divr16u::return#2 return zp ZP_WORD:19 4.0 +(word) divr16u::return#3 return zp ZP_WORD:19 4.0 (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) -(word~) lin16u_gen::$5 $5 zp ZP_WORD:7 22.0 +(word~) lin16u_gen::$5 $5 zp ZP_WORD:15 22.0 (label) lin16u_gen::@1 (label) lin16u_gen::@3 (label) lin16u_gen::@4 (label) lin16u_gen::@return (word) lin16u_gen::ampl -(const word) lin16u_gen::ampl#0 ampl = (const word) lin16u_gen::max#0-(const word) lin16u_gen::min#0 +(word) lin16u_gen::ampl#0 ampl zp ZP_WORD:3 2.0 (word) lin16u_gen::i (word) lin16u_gen::i#1 i zp ZP_WORD:5 16.5 (word) lin16u_gen::i#2 i zp ZP_WORD:5 4.4 (word) lin16u_gen::length -(const word) lin16u_gen::length#0 length = (byte/signed byte/word/signed word/dword/signed dword) 20 +(word) lin16u_gen::length#2 length zp ZP_WORD:7 0.7142857142857143 (word*) lin16u_gen::lintab -(word*) lin16u_gen::lintab#1 lintab zp ZP_WORD:3 7.333333333333333 -(word*) lin16u_gen::lintab#2 lintab zp ZP_WORD:3 8.25 +(word*) lin16u_gen::lintab#2 lintab zp ZP_WORD:13 7.333333333333333 +(word*) lin16u_gen::lintab#3 lintab zp ZP_WORD:13 8.75 +(word*) lin16u_gen::lintab#4 lintab zp ZP_WORD:13 0.14285714285714285 (word) lin16u_gen::max -(const word) lin16u_gen::max#0 max = (word/signed word/dword/signed dword) 29793 +(word) lin16u_gen::max#2 max zp ZP_WORD:3 2.0 (word) lin16u_gen::min -(const word) lin16u_gen::min#0 min = (word/signed word/dword/signed dword) 557 +(word) lin16u_gen::min#2 min zp ZP_WORD:5 0.3076923076923077 (dword) lin16u_gen::step -(dword) lin16u_gen::step#0 step zp ZP_DWORD:17 1.625 +(dword) lin16u_gen::step#0 step zp ZP_DWORD:23 1.4444444444444446 (word) lin16u_gen::stepf -(word) lin16u_gen::stepf#0 stepf zp ZP_WORD:13 4.0 +(word) lin16u_gen::stepf#0 stepf zp ZP_WORD:19 4.0 (word) lin16u_gen::stepi -(word) lin16u_gen::stepi#0 stepi zp ZP_WORD:15 0.8 +(word) lin16u_gen::stepi#0 stepi zp ZP_WORD:21 0.6666666666666666 (dword) lin16u_gen::val +(dword) lin16u_gen::val#0 val zp ZP_DWORD:9 4.0 (dword) lin16u_gen::val#1 val zp ZP_DWORD:9 5.5 -(dword) lin16u_gen::val#2 val zp ZP_DWORD:9 11.0 +(dword) lin16u_gen::val#2 val zp ZP_DWORD:9 11.666666666666666 (byte*) line_cursor -(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143 -(byte*) line_cursor#19 line_cursor zp ZP_WORD:3 1.4444444444444446 -(byte*) line_cursor#9 line_cursor zp ZP_WORD:3 204.0 +(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 11.344827586206897 +(byte*) line_cursor#11 line_cursor zp ZP_WORD:3 204.0 +(byte*) line_cursor#21 line_cursor zp ZP_WORD:3 15.0 (void()) main() (label) main::@1 +(label) main::@11 +(label) main::@12 +(label) main::@13 +(label) main::@14 +(label) main::@15 +(label) main::@16 +(label) main::@17 +(label) main::@18 +(label) main::@19 +(label) main::@2 +(label) main::@20 (label) main::@3 +(label) main::@4 (label) main::@5 (label) main::@6 (label) main::@7 @@ -90,11 +107,18 @@ (label) main::@9 (label) main::@return (byte) main::i -(byte) main::i#1 i zp ZP_BYTE:2 11.0 -(byte) main::i#2 i zp ZP_BYTE:2 4.888888888888889 -(word[20]) main::lintab -(const word[20]) main::lintab#0 lintab = { fill( 20, 0) } -(const string) main::str str = (string) " @" +(byte) main::i#1 i zp ZP_BYTE:2 16.5 +(byte) main::i#2 i zp ZP_BYTE:2 3.9285714285714284 +(word[20]) main::lintab1 +(const word[20]) main::lintab1#0 lintab1 = { fill( 20, 0) } +(word[20]) main::lintab2 +(const word[20]) main::lintab2#0 lintab2 = { fill( 20, 0) } +(const string) main::str str = (string) " @" +(const string) main::str1 str1 = (string) " @" +(const string) main::str2 str2 = (string) " @" +(const string) main::str3 str3 = (string) " @" +(const string) main::str4 str4 = (string) " @" +(const string) main::str5 str5 = (string) " @" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0 @@ -103,7 +127,7 @@ (byte) print_byte::b (byte) print_byte::b#0 reg byte x 4.0 (byte) print_byte::b#1 reg byte x 4.0 -(byte) print_byte::b#2 reg byte x 22.0 +(byte) print_byte::b#2 reg byte x 11.0 (byte) print_byte::b#3 reg byte x 4.75 (byte[]) print_byte::hextab (const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef" @@ -127,28 +151,34 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:7 202.0 -(byte*) print_str::str#2 str zp ZP_WORD:7 101.0 +(byte*) print_str::str#0 str zp ZP_WORD:5 202.0 +(byte*) print_str::str#7 str zp ZP_WORD:5 101.5 +(byte*) print_str::str#9 str zp ZP_WORD:5 2.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp ZP_WORD:7 5.0 +(word) print_word::w#2 w zp ZP_WORD:5 22.0 +(word) print_word::w#3 w zp ZP_WORD:5 22.0 +(word) print_word::w#6 w zp ZP_WORD:5 8.666666666666666 (word) rem16u -(word) rem16u#1 rem16u zp ZP_WORD:5 0.8 +(word) rem16u#20 rem16u zp ZP_WORD:3 20.0 zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::lintab#2 lin16u_gen::lintab#1 divr16u::divisor#6 ] +zp ZP_WORD:3 [ line_cursor#11 line_cursor#21 line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::max#2 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#20 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 lin16u_gen::ampl#0 ] +zp ZP_WORD:5 [ print_word::w#6 print_word::w#2 print_word::w#3 print_str::str#7 print_str::str#9 print_str::str#0 lin16u_gen::min#2 lin16u_gen::i#2 lin16u_gen::i#1 ] reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp ZP_WORD:5 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 lin16u_gen::i#2 lin16u_gen::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] -zp ZP_WORD:7 [ print_str::str#2 print_str::str#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 print_word::w#0 lin16u_gen::$5 ] -zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 ] -zp ZP_WORD:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] +zp ZP_WORD:7 [ char_cursor#74 char_cursor#44 char_cursor#69 char_cursor#77 char_cursor#2 char_cursor#11 char_cursor#85 char_cursor#1 lin16u_gen::length#2 ] +zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] +zp ZP_WORD:13 [ lin16u_gen::lintab#3 lin16u_gen::lintab#2 lin16u_gen::lintab#4 ] +zp ZP_WORD:15 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 lin16u_gen::$5 ] +zp ZP_WORD:17 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] +zp ZP_WORD:19 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -zp ZP_WORD:15 [ lin16u_gen::stepi#0 ] -zp ZP_DWORD:17 [ lin16u_gen::step#0 ] +zp ZP_WORD:21 [ lin16u_gen::stepi#0 ] +zp ZP_DWORD:23 [ lin16u_gen::step#0 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ]