1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Implemented 16bit division. Added support for word arrays. (idx must be multiplied by 2 manually)

This commit is contained in:
jespergravgaard 2018-02-01 20:17:08 +01:00
parent e0124ee654
commit 45302103fa
10 changed files with 4936 additions and 1937 deletions

View File

@ -0,0 +1,4 @@
lda {c1},x
sta {z1}
lda {c1}+1,x
sta {z1}+1

View File

@ -0,0 +1,4 @@
lda {c1},y
sta {z1}
lda {c1}+1,y
sta {z1}+1

View File

@ -0,0 +1,7 @@
lda {z1}
sec
sbc {z2}
sta {z1}
lda {z1}+1
sbc {z2}+1
sta {z1}+1

View File

@ -0,0 +1,2 @@
asl {z1}
rol {z1}+1

View File

@ -141,6 +141,8 @@ public class Pass4CodeGeneration {
asm.addDataAlignment(alignment);
}
if(constantVar.getValue() instanceof ConstantArrayList) {
SymbolTypeArray constTypeArray = (SymbolTypeArray) constantVar.getType();
SymbolType elementType = constTypeArray.getElementType();
ConstantArrayList constantArrayList = (ConstantArrayList) constantVar.getValue();
String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName();
if(asmName != null && !added.contains(asmName)) {
@ -149,11 +151,11 @@ public class Pass4CodeGeneration {
String asmElement = AsmFormat.getAsmConstant(program, element, 99, scopeRef);
asmElements.add(asmElement);
}
if(SymbolType.isByte(constantArrayList.getElementType())) {
if(SymbolType.isByte(elementType) || SymbolType.isSByte(elementType)) {
asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmElements);
added.add(asmName);
} else if(SymbolType.isSByte(constantArrayList.getElementType())) {
asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmElements);
} else if(SymbolType.isWord(elementType) || SymbolType.isSWord(elementType)) {
asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.WORD, asmElements);
added.add(asmName);
} else {
throw new RuntimeException("Unhandled constant array element type " + constantArrayList.toString(program));

View File

@ -2,13 +2,36 @@ import "print.kc"
const byte* NULL = 0;
void main() {
byte* rem = $ff;
word rem16u = 0;
void main() {
print_cls();
test_8u();
test_16u();
}
void test_16u() {
word[] dividends = { $ffff, $ffff, $ffff, $ffff, $ffff, $ffff};
word[] divisors = { 5, 7, 11, 13, 17, 19 };
for( byte i=0;i!=12;i=i+2) {
word dividend = dividends[i];
word divisor = divisors[i];
word res = div16u(dividend, divisor);
print_word(dividend);
print_str(" / @");
print_word(divisor);
print_str(" = @");
print_word(res);
print_str(" @");
print_word(rem16u);
print_ln();
}
}
void test_8u() {
byte* rem = $ff;
byte[] dividends = { 255, 255, 255, 255, 255, 255};
byte[] divisors = { 5, 7, 11, 13, 17, 19 };
print_cls();
for( byte i: 0..5 ) {
byte dividend = dividends[i];
byte divisor = divisors[i];
@ -45,4 +68,28 @@ byte div8u(byte dividend, byte divisor, byte* remainder) {
}
*remainder = rem;
return quotient;
}
// Performs division on two 16 bit unsigned bytes
// Returns dividend/divisor.
// If remainder is non-null it will be set to the remainder.
// Implemented using simple binary division
word div16u(word dividend, word divisor) {
word rem = 0;
word quotient = 0;
for( byte i : 0..15) {
rem = rem << 1;
if( (>dividend & $80) != 0 ) {
rem++;
}
dividend = dividend << 1;
quotient = quotient << 1;
if(rem>=divisor) {
quotient++;
rem = rem - divisor;
}
}
rem16u = rem;
return quotient;
}

View File

@ -1,16 +1,238 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label char_cursor = 5
.label char_cursor = 7
.label line_cursor = 3
.label rem16u = 9
jsr main
main: {
.label rem = $ff
.label dividend = $b
.label divisor = $c
.label res = 9
.label i = 2
jsr print_cls
jsr test_8u
jsr test_16u
rts
}
test_16u: {
.label dividend = $d
.label divisor = $f
.label res = $11
.label i = 2
lda #0
sta rem16u
sta rem16u+1
sta i
b1:
ldy i
lda dividends,y
sta dividend
lda dividends+1,y
sta dividend+1
lda divisors,y
sta divisor
lda divisors+1,y
sta divisor+1
lda dividend
sta div16u.dividend
lda dividend+1
sta div16u.dividend+1
jsr div16u
lda div16u.return_1
sta div16u.return
lda div16u.return_1+1
sta div16u.return+1
lda div16u.return
sta res
lda div16u.return+1
sta res+1
lda dividend
sta print_word.w
lda dividend+1
sta print_word.w+1
lda line_cursor
sta char_cursor
lda line_cursor+1
sta char_cursor+1
jsr print_word
lda #<str
sta print_str.str
lda #>str
sta print_str.str+1
jsr print_str
lda divisor
sta print_word.w
lda divisor+1
sta print_word.w+1
jsr print_word
lda #<str1
sta print_str.str
lda #>str1
sta print_str.str+1
jsr print_str
lda res
sta print_word.w
lda res+1
sta print_word.w+1
jsr print_word
lda #<str2
sta print_str.str
lda #>str2
sta print_str.str+1
jsr print_str
lda div16u.rem
sta print_word.w
lda div16u.rem+1
sta print_word.w+1
jsr print_word
jsr print_ln
lda #2
clc
adc i
sta i
cmp #$c
bne b1
rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
divisors: .word 5, 7, $b, $d, $11, $13
}
print_ln: {
b1:
lda line_cursor
clc
adc #$28
sta line_cursor
bcc !+
inc line_cursor+1
!:
lda line_cursor+1
cmp char_cursor+1
bcc b1
bne !+
lda line_cursor
cmp char_cursor
bcc b1
!:
rts
}
print_word: {
.label w = 5
lda w+1
tax
jsr print_byte
lda w
tax
jsr print_byte
rts
}
print_byte: {
txa
lsr
lsr
lsr
lsr
tay
lda hextab,y
jsr print_char
txa
and #$f
tay
lda hextab,y
jsr print_char
rts
hextab: .text "0123456789abcdef"
}
print_char: {
ldy #0
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
rts
}
print_str: {
.label str = 5
b1:
ldy #0
lda (str),y
cmp #'@'
bne b2
rts
b2:
ldy #0
lda (str),y
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
inc str
bne !+
inc str+1
!:
jmp b1
}
div16u: {
.label dividend = 5
.label divisor = $f
.label return = 5
.label rem = 9
.label quotient = 7
.label return_1 = 7
ldx #0
txa
sta quotient
sta quotient+1
sta rem
sta rem+1
b1:
asl rem
rol rem+1
lda dividend+1
and #$80
cmp #0
beq b2
inc rem
bne !+
inc rem+1
!:
b2:
asl dividend
rol dividend+1
asl quotient
rol quotient+1
lda rem+1
cmp divisor+1
bcc b3
bne !+
lda rem
cmp divisor
bcc b3
!:
inc quotient
bne !+
inc quotient+1
!:
lda rem
sec
sbc divisor
sta rem
lda rem+1
sbc divisor+1
sta rem+1
b3:
inx
cpx #$10
bne b1
rts
}
test_8u: {
.label rem = $ff
.label dividend = $13
.label divisor = $14
.label res = $b
.label i = 2
lda #<$400
sta line_cursor
lda #>$400
@ -59,9 +281,9 @@ main: {
inc i
lda i
cmp #6
bne b13
bne b12
rts
b13:
b12:
lda line_cursor
sta char_cursor
lda line_cursor+1
@ -73,78 +295,11 @@ main: {
dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff
divisors: .byte 5, 7, $b, $d, $11, $13
}
print_ln: {
b1:
lda line_cursor
clc
adc #$28
sta line_cursor
bcc !+
inc line_cursor+1
!:
lda line_cursor+1
cmp char_cursor+1
bcc b1
bne !+
lda line_cursor
cmp char_cursor
bcc b1
!:
rts
}
print_byte: {
txa
lsr
lsr
lsr
lsr
tay
lda hextab,y
jsr print_char
txa
and #$f
tay
lda hextab,y
jsr print_char
rts
hextab: .text "0123456789abcdef"
}
print_char: {
ldy #0
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
rts
}
print_str: {
.label str = 7
b1:
ldy #0
lda (str),y
cmp #'@'
bne b2
rts
b2:
ldy #0
lda (str),y
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
inc str
bne !+
inc str+1
!:
jmp b1
}
div8u: {
.label dividend = 9
.label divisor = $c
.label quotient = $a
.label return = $a
.label dividend = $b
.label divisor = $14
.label quotient = $c
.label return = $c
ldx #0
txa
sta quotient
@ -172,7 +327,7 @@ div8u: {
inx
cpx #8
bne b1
sty main.rem
sty test_8u.rem
rts
}
print_cls: {

View File

@ -1,167 +1,283 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@10
@10: scope:[] from @begin
to:@13
@13: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @10
@end: scope:[] from @13
[3] phi() [ ] ( )
main: scope:[main] from @10
main: scope:[main] from @13
[4] phi() [ ] ( main:2 [ ] )
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@13
[6] (byte*) line_cursor#13 ← phi( main::@13/(byte*) line_cursor#1 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] )
[6] (byte*) char_cursor#42 ← phi( main::@13/(byte*~) char_cursor#48 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] )
[6] (byte) main::i#10 ← phi( main::@13/(byte) main::i#1 main/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] )
[7] (byte) main::dividend#0 ← *((const byte[]) main::dividends#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] )
[8] (byte) main::divisor#0 ← *((const byte[]) main::divisors#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] )
[9] (byte) div8u::dividend#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] )
[10] (byte) div8u::divisor#0 ← (byte) main::divisor#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] )
[11] call div8u param-assignment [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] )
[12] (byte) div8u::return#0 ← (byte) div8u::return#1 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] )
to:main::@4
main::@4: scope:[main] from main::@1
[13] (byte) main::res#0 ← (byte) div8u::return#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] )
[14] (byte) print_byte::b#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] )
[15] call print_byte param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] )
to:main::@5
main::@5: scope:[main] from main::@4
[16] phi() [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] )
[17] call print_str param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] )
to:main::@6
main::@6: scope:[main] from main::@5
[18] (byte) print_byte::b#1 ← (byte) main::divisor#0 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] )
[19] call print_byte param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] )
to:main::@7
main::@7: scope:[main] from main::@6
[20] phi() [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] )
[21] call print_str param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] )
to:main::@8
main::@8: scope:[main] from main::@7
[22] (byte) print_byte::b#2 ← (byte) main::res#0 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] )
[23] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] )
to:main::@9
main::@9: scope:[main] from main::@8
[24] phi() [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] )
[25] call print_str param-assignment [ main::i#10 line_cursor#13 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#2 ] )
to:main::@10
main::@10: scope:[main] from main::@9
[26] (byte) print_byte::b#3 ← *((const byte*) main::rem#0) [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] )
[27] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] )
to:main::@11
main::@11: scope:[main] from main::@10
[28] phi() [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] )
[29] call print_ln param-assignment [ main::i#10 line_cursor#1 ] ( main:2 [ main::i#10 line_cursor#1 ] )
to:main::@12
main::@12: scope:[main] from main::@11
[30] (byte) main::i#1 ← ++ (byte) main::i#10 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] )
[31] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@13 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] )
main::@1: scope:[main] from main
[6] phi() [ ] ( main:2 [ ] )
[7] call test_8u param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
to:main::@2
main::@2: scope:[main] from main::@1
[8] phi() [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
[9] call test_16u param-assignment [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@12
[32] return [ ] ( main:2 [ ] )
main::@return: scope:[main] from main::@2
[10] return [ ] ( main:2 [ ] )
to:@return
main::@13: scope:[main] from main::@12
[33] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] )
to:main::@1
print_ln: scope:[print_ln] from main::@11
[34] phi() [ line_cursor#13 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#13 char_cursor#28 ] )
test_16u: scope:[test_16u] from main::@2
[11] phi() [ line_cursor#1 ] ( main:2::test_16u:9 [ line_cursor#1 ] )
to:test_16u::@1
test_16u::@1: scope:[test_16u] from test_16u test_16u::@11
[12] (word) rem16u#16 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@11/(word) div16u::rem#8 ) [ test_16u::i#10 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 line_cursor#1 ] )
[12] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@11/(byte) test_16u::i#1 ) [ test_16u::i#10 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 line_cursor#1 ] )
[13] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] )
[14] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] )
[15] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] )
[16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 line_cursor#1 ] )
[17] call div16u param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#1 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#1 line_cursor#1 ] )
[18] (word) div16u::return#0 ← (word) div16u::return#1 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#0 line_cursor#1 ] )
to:test_16u::@3
test_16u::@3: scope:[test_16u] from test_16u::@1
[19] (word) test_16u::res#0 ← (word) div16u::return#0 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 line_cursor#1 ] )
[20] (word) print_word::w#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 line_cursor#1 ] )
[21] (byte*~) char_cursor#84 ← (byte*) line_cursor#1 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 char_cursor#84 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 char_cursor#84 line_cursor#1 ] )
[22] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] )
to:test_16u::@4
test_16u::@4: scope:[test_16u] from test_16u::@3
[23] phi() [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] )
[24] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] )
to:test_16u::@5
test_16u::@5: scope:[test_16u] from test_16u::@4
[25] (word) print_word::w#1 ← (word) test_16u::divisor#0 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] )
[26] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] )
to:test_16u::@6
test_16u::@6: scope:[test_16u] from test_16u::@5
[27] phi() [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] )
[28] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] )
to:test_16u::@7
test_16u::@7: scope:[test_16u] from test_16u::@6
[29] (word) print_word::w#2 ← (word) test_16u::res#0 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] )
[30] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] )
to:test_16u::@8
test_16u::@8: scope:[test_16u] from test_16u::@7
[31] phi() [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] )
[32] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] )
to:test_16u::@9
test_16u::@9: scope:[test_16u] from test_16u::@8
[33] (word) print_word::w#3 ← (word) div16u::rem#8 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] )
[34] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] )
to:test_16u::@10
test_16u::@10: scope:[test_16u] from test_16u::@9
[35] phi() [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] )
[36] call print_ln param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] )
to:test_16u::@11
test_16u::@11: scope:[test_16u] from test_16u::@10
[37] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] )
[38] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] )
to:test_16u::@return
test_16u::@return: scope:[test_16u] from test_16u::@11
[39] return [ ] ( main:2::test_16u:9 [ ] )
to:@return
print_ln: scope:[print_ln] from test_16u::@10 test_8u::@10
[40] (byte*) line_cursor#22 ← phi( test_16u::@10/(byte*) line_cursor#1 test_8u::@10/(byte*) line_cursor#25 ) [ line_cursor#22 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#22 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#22 char_cursor#11 ] )
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[35] (byte*) line_cursor#6 ← phi( print_ln/(byte*) line_cursor#13 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#6 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#6 char_cursor#28 ] )
[36] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] )
[37] if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] )
[41] (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#11 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#11 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#11 char_cursor#11 ] )
[42] (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::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] )
[43] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] )
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[38] return [ line_cursor#1 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 ] )
[44] return [ line_cursor#1 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 ] )
to:@return
print_byte: scope:[print_byte] from main::@10 main::@4 main::@6 main::@8
[39] (byte*) char_cursor#41 ← phi( main::@10/(byte*) char_cursor#2 main::@4/(byte*) char_cursor#42 main::@6/(byte*) char_cursor#2 main::@8/(byte*) char_cursor#2 ) [ print_byte::b#4 char_cursor#41 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] )
[39] (byte) print_byte::b#4 ← phi( main::@10/(byte) print_byte::b#3 main::@4/(byte) print_byte::b#0 main::@6/(byte) print_byte::b#1 main::@8/(byte) print_byte::b#2 ) [ print_byte::b#4 char_cursor#41 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] )
[40] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#4 char_cursor#41 print_byte::$0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] )
[41] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#4 char_cursor#41 print_char::ch#0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] )
[42] call print_char param-assignment [ char_cursor#28 print_byte::b#4 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] )
print_word: scope:[print_word] from test_16u::@3 test_16u::@5 test_16u::@7 test_16u::@9
[45] (byte*) char_cursor#71 ← phi( test_16u::@3/(byte*~) char_cursor#84 test_16u::@5/(byte*) char_cursor#2 test_16u::@7/(byte*) char_cursor#2 test_16u::@9/(byte*) char_cursor#2 ) [ print_word::w#4 char_cursor#71 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] )
[45] (word) print_word::w#4 ← phi( test_16u::@3/(word) print_word::w#0 test_16u::@5/(word) print_word::w#1 test_16u::@7/(word) print_word::w#2 test_16u::@9/(word) print_word::w#3 ) [ print_word::w#4 char_cursor#71 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] )
[46] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_word::w#4 char_cursor#71 print_byte::b#0 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] )
[47] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] )
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[48] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] )
[49] call print_byte param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] )
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[50] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] )
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1 test_8u::@3 test_8u::@5 test_8u::@7 test_8u::@9
[51] (byte*) char_cursor#72 ← phi( print_word/(byte*) char_cursor#71 print_word::@1/(byte*) char_cursor#11 test_8u::@3/(byte*) char_cursor#75 test_8u::@5/(byte*) char_cursor#2 test_8u::@7/(byte*) char_cursor#2 test_8u::@9/(byte*) char_cursor#2 ) [ print_byte::b#6 char_cursor#72 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] )
[51] (byte) print_byte::b#6 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 test_8u::@3/(byte) print_byte::b#2 test_8u::@5/(byte) print_byte::b#3 test_8u::@7/(byte) print_byte::b#4 test_8u::@9/(byte) print_byte::b#5 ) [ print_byte::b#6 char_cursor#72 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] )
[52] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 char_cursor#72 print_byte::$0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] )
[53] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 char_cursor#72 print_char::ch#0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] )
[54] call print_char param-assignment [ char_cursor#11 print_byte::b#6 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] )
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[43] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#28 print_byte::$2 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] )
[44] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#28 print_char::ch#1 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] )
[45] call print_char param-assignment [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] )
[55] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] )
[56] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] )
[57] call print_char param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] )
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[46] return [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] )
[58] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] )
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1
[47] (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#41 print_byte::@1/(byte*) char_cursor#28 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] )
[47] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] )
[48] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] )
[49] (byte*) char_cursor#28 ← ++ (byte*) char_cursor#27 [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] )
[59] (byte*) char_cursor#45 ← phi( print_byte/(byte*) char_cursor#72 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] )
[59] (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#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] )
[60] *((byte*) char_cursor#45) ← (byte) print_char::ch#2 [ char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] )
[61] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#45 [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] )
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[50] return [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] )
[62] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] )
to:@return
print_str: scope:[print_str] from main::@5 main::@7 main::@9
[51] (byte*) print_str::str#6 ← phi( main::@5/(const string) main::str main::@7/(const string) main::str1 main::@9/(const string) main::str2 ) [ char_cursor#28 print_str::str#6 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_str::str#6 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_str::str#6 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#28 print_str::str#6 ] )
print_str: scope:[print_str] from test_16u::@4 test_16u::@6 test_16u::@8 test_8u::@4 test_8u::@6 test_8u::@8
[63] (byte*) print_str::str#9 ← phi( test_16u::@4/(const string) test_16u::str test_16u::@6/(const string) test_16u::str1 test_16u::@8/(const string) test_16u::str2 test_8u::@4/(const string) test_8u::str test_8u::@6/(const string) test_8u::str1 test_8u::@8/(const string) test_8u::str2 ) [ char_cursor#11 print_str::str#9 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_str::str#9 ] )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[52] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#28 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] )
[52] (byte*) print_str::str#4 ← phi( print_str/(byte*) print_str::str#6 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] )
[53] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] )
[64] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#11 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] )
[64] (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::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] )
[65] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] )
to:print_str::@return
print_str::@return: scope:[print_str] from print_str::@1
[54] return [ char_cursor#2 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 ] )
[66] return [ char_cursor#2 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 ] )
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[55] *((byte*) char_cursor#2) ← *((byte*) print_str::str#4) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] )
[56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#4 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#4 char_cursor#1 ] )
[57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#0 char_cursor#1 ] )
[67] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] )
[68] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#7 char_cursor#1 ] )
[69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#0 char_cursor#1 ] )
to:print_str::@1
div8u: scope:[div8u] from main::@1
[58] phi() [ div8u::dividend#0 div8u::divisor#0 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] )
div16u: scope:[div16u] from test_16u::@1
[70] phi() [ div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::dividend#0 div16u::divisor#0 ] )
to:div16u::@1
div16u::@1: scope:[div16u] from div16u div16u::@3
[71] (byte) div16u::i#2 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(byte) div16u::i#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] )
[71] (word) div16u::quotient#3 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(word) div16u::return#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] )
[71] (word) div16u::dividend#2 ← phi( div16u/(word) div16u::dividend#0 div16u::@3/(word) div16u::dividend#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] )
[71] (word) div16u::rem#4 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(word) div16u::rem#8 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] )
[72] (word) div16u::rem#1 ← (word) div16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] )
[73] (byte~) div16u::$1 ← > (word) div16u::dividend#2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] )
[74] (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] )
[75] if((byte~) div16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div16u::@2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] )
to:div16u::@4
div16u::@4: scope:[div16u] from div16u::@1
[76] (word) div16u::rem#2 ← ++ (word) div16u::rem#1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] )
to:div16u::@2
div16u::@2: scope:[div16u] from div16u::@1 div16u::@4
[77] (word) div16u::rem#5 ← phi( div16u::@1/(word) div16u::rem#1 div16u::@4/(word) div16u::rem#2 ) [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#5 ] )
[78] (word) div16u::dividend#1 ← (word) div16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] )
[79] (word) div16u::quotient#1 ← (word) div16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] )
[80] if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] )
to:div16u::@5
div16u::@5: scope:[div16u] from div16u::@2
[81] (word) div16u::quotient#2 ← ++ (word) div16u::quotient#1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] )
[82] (word) div16u::rem#3 ← (word) div16u::rem#5 - (word) div16u::divisor#0 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] )
to:div16u::@3
div16u::@3: scope:[div16u] from div16u::@2 div16u::@5
[83] (word) div16u::return#1 ← phi( div16u::@2/(word) div16u::quotient#1 div16u::@5/(word) div16u::quotient#2 ) [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] )
[83] (word) div16u::rem#8 ← phi( div16u::@2/(word) div16u::rem#5 div16u::@5/(word) div16u::rem#3 ) [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] )
[84] (byte) div16u::i#1 ← ++ (byte) div16u::i#2 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] )
[85] if((byte) div16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto div16u::@1 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] )
to:div16u::@return
div16u::@return: scope:[div16u] from div16u::@3
[86] return [ div16u::rem#8 div16u::return#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::return#1 ] )
to:@return
test_8u: scope:[test_8u] from main::@1
[87] phi() [ ] ( main:2::test_8u:7 [ ] )
to:test_8u::@1
test_8u::@1: scope:[test_8u] from test_8u test_8u::@12
[88] (byte*) line_cursor#25 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) 1024 test_8u::@12/(byte*) line_cursor#1 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] )
[88] (byte*) char_cursor#75 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) 1024 test_8u::@12/(byte*~) char_cursor#98 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] )
[88] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@12/(byte) test_8u::i#1 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] )
[89] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] )
[90] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] )
[91] (byte) div8u::dividend#0 ← (byte) test_8u::dividend#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] )
[92] (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] )
[93] call div8u param-assignment [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] )
[94] (byte) div8u::return#0 ← (byte) div8u::return#1 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] )
to:test_8u::@3
test_8u::@3: scope:[test_8u] from test_8u::@1
[95] (byte) test_8u::res#0 ← (byte) div8u::return#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] )
[96] (byte) print_byte::b#2 ← (byte) test_8u::dividend#0 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] )
[97] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] )
to:test_8u::@4
test_8u::@4: scope:[test_8u] from test_8u::@3
[98] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] )
[99] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] )
to:test_8u::@5
test_8u::@5: scope:[test_8u] from test_8u::@4
[100] (byte) print_byte::b#3 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] )
[101] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] )
to:test_8u::@6
test_8u::@6: scope:[test_8u] from test_8u::@5
[102] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] )
[103] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] )
to:test_8u::@7
test_8u::@7: scope:[test_8u] from test_8u::@6
[104] (byte) print_byte::b#4 ← (byte) test_8u::res#0 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] )
[105] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] )
to:test_8u::@8
test_8u::@8: scope:[test_8u] from test_8u::@7
[106] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] )
[107] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 ] )
to:test_8u::@9
test_8u::@9: scope:[test_8u] from test_8u::@8
[108] (byte) print_byte::b#5 ← *((const byte*) test_8u::rem#0) [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] )
[109] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] )
to:test_8u::@10
test_8u::@10: scope:[test_8u] from test_8u::@9
[110] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] )
[111] call print_ln param-assignment [ line_cursor#1 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#10 ] )
to:test_8u::@11
test_8u::@11: scope:[test_8u] from test_8u::@10
[112] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] )
[113] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] )
to:test_8u::@return
test_8u::@return: scope:[test_8u] from test_8u::@11
[114] return [ line_cursor#1 ] ( main:2::test_8u:7 [ line_cursor#1 ] )
to:@return
test_8u::@12: scope:[test_8u] from test_8u::@11
[115] (byte*~) char_cursor#98 ← (byte*) line_cursor#1 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] )
to:test_8u::@1
div8u: scope:[div8u] from test_8u::@1
[116] phi() [ div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] )
to:div8u::@1
div8u::@1: scope:[div8u] from div8u div8u::@3
[59] (byte) div8u::i#2 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::i#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] )
[59] (byte) div8u::quotient#3 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::return#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] )
[59] (byte) div8u::dividend#2 ← phi( div8u/(byte) div8u::dividend#0 div8u::@3/(byte) div8u::dividend#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] )
[59] (byte) div8u::rem#4 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::rem#8 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] )
[60] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] )
[61] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] )
[62] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] )
[117] (byte) div8u::i#2 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::i#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] )
[117] (byte) div8u::quotient#3 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::return#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] )
[117] (byte) div8u::dividend#2 ← phi( div8u/(byte) div8u::dividend#0 div8u::@3/(byte) div8u::dividend#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] )
[117] (byte) div8u::rem#4 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::rem#8 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] )
[118] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] )
[119] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] )
[120] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] )
to:div8u::@4
div8u::@4: scope:[div8u] from div8u::@1
[63] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] )
[121] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] )
to:div8u::@2
div8u::@2: scope:[div8u] from div8u::@1 div8u::@4
[64] (byte) div8u::rem#5 ← phi( div8u::@1/(byte) div8u::rem#1 div8u::@4/(byte) div8u::rem#2 ) [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] )
[65] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] )
[66] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] )
[67] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] )
[122] (byte) div8u::rem#5 ← phi( div8u::@1/(byte) div8u::rem#1 div8u::@4/(byte) div8u::rem#2 ) [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] )
[123] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] )
[124] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] )
[125] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] )
to:div8u::@5
div8u::@5: scope:[div8u] from div8u::@2
[68] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] )
[69] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] )
[126] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] )
[127] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] )
to:div8u::@3
div8u::@3: scope:[div8u] from div8u::@2 div8u::@5
[70] (byte) div8u::return#1 ← phi( div8u::@2/(byte) div8u::quotient#1 div8u::@5/(byte) div8u::quotient#2 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] )
[70] (byte) div8u::rem#8 ← phi( div8u::@2/(byte) div8u::rem#5 div8u::@5/(byte) div8u::rem#3 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] )
[71] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] )
[72] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] )
[128] (byte) div8u::return#1 ← phi( div8u::@2/(byte) div8u::quotient#1 div8u::@5/(byte) div8u::quotient#2 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] )
[128] (byte) div8u::rem#8 ← phi( div8u::@2/(byte) div8u::rem#5 div8u::@5/(byte) div8u::rem#3 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] )
[129] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] )
[130] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] )
to:div8u::@6
div8u::@6: scope:[div8u] from div8u::@3
[73] *((const byte*) main::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] )
[131] *((const byte*) test_8u::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] )
to:div8u::@return
div8u::@return: scope:[div8u] from div8u::@6
[74] return [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] )
[132] return [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] )
to:@return
print_cls: scope:[print_cls] from main
[75] phi() [ ] ( main:2::print_cls:5 [ ] )
[133] phi() [ ] ( main:2::print_cls:5 [ ] )
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[76] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
[77] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
[78] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
[79] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
[134] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
[135] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
[136] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
[137] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[80] return [ ] ( main:2::print_cls:5 [ ] )
[138] return [ ] ( main:2::print_cls:5 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,48 @@
(label) @10
(label) @13
(label) @begin
(label) @end
(byte*) char_cursor
(byte*) char_cursor#1 char_cursor zp ZP_WORD:5 101.0
(byte*) char_cursor#2 char_cursor zp ZP_WORD:5 33.8
(byte*) char_cursor#27 char_cursor zp ZP_WORD:5 4.0
(byte*) char_cursor#28 char_cursor zp ZP_WORD:5 5.349999999999999
(byte*) char_cursor#41 char_cursor zp ZP_WORD:5 15.333333333333332
(byte*) char_cursor#42 char_cursor zp ZP_WORD:5 2.4444444444444446
(byte*~) char_cursor#48 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 3.40625
(byte*) char_cursor#2 char_cursor zp ZP_WORD:7 23.1875
(byte*) char_cursor#45 char_cursor zp ZP_WORD:7 4.0
(byte*) char_cursor#71 char_cursor zp ZP_WORD:7 23.0
(byte*) char_cursor#72 char_cursor zp ZP_WORD:7 16.666666666666664
(byte*) char_cursor#75 char_cursor zp ZP_WORD:7 2.4444444444444446
(byte*~) char_cursor#84 char_cursor zp ZP_WORD:7 22.0
(byte*~) char_cursor#98 char_cursor zp ZP_WORD:7 22.0
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
(byte~) div16u::$1 reg byte a 202.0
(byte~) div16u::$2 reg byte a 202.0
(label) div16u::@1
(label) div16u::@2
(label) div16u::@3
(label) div16u::@4
(label) div16u::@5
(label) div16u::@return
(word) div16u::dividend
(word) div16u::dividend#0 dividend zp ZP_WORD:5 4.333333333333333
(word) div16u::dividend#1 dividend zp ZP_WORD:5 25.25
(word) div16u::dividend#2 dividend zp ZP_WORD:5 43.57142857142858
(word) div16u::divisor
(word) div16u::divisor#0 divisor zp ZP_WORD:15 12.529411764705884
(byte) div16u::i
(byte) div16u::i#1 reg byte x 151.5
(byte) div16u::i#2 reg byte x 15.538461538461538
(word) div16u::quotient
(word) div16u::quotient#1 quotient zp ZP_WORD:7 151.5
(word) div16u::quotient#2 quotient zp ZP_WORD:7 101.0
(word) div16u::quotient#3 quotient zp ZP_WORD:7 25.25
(word) div16u::rem
(word) div16u::rem#1 rem zp ZP_WORD:9 75.75
(word) div16u::rem#2 rem zp ZP_WORD:9 202.0
(word) div16u::rem#3 rem zp ZP_WORD:9 202.0
(word) div16u::rem#4 rem zp ZP_WORD:9 202.0
(word) div16u::rem#5 rem zp ZP_WORD:9 101.0
(word) div16u::rem#8 rem zp ZP_WORD:9 12.5
(word) div16u::return
(word) div16u::return#0 return zp ZP_WORD:5 22.0
(word) div16u::return#1 return#1 zp ZP_WORD:7 62.8
(byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder)
(byte~) div8u::$1 reg byte a 202.0
(label) div8u::@1
@ -19,18 +53,18 @@
(label) div8u::@6
(label) div8u::@return
(byte) div8u::dividend
(byte) div8u::dividend#0 dividend zp ZP_BYTE:9 4.333333333333333
(byte) div8u::dividend#1 dividend zp ZP_BYTE:9 25.25
(byte) div8u::dividend#2 dividend zp ZP_BYTE:9 50.83333333333333
(byte) div8u::dividend#0 dividend zp ZP_BYTE:11 4.333333333333333
(byte) div8u::dividend#1 dividend zp ZP_BYTE:11 25.25
(byte) div8u::dividend#2 dividend zp ZP_BYTE:11 50.83333333333333
(byte) div8u::divisor
(byte) div8u::divisor#0 divisor zp ZP_BYTE:12 13.3125
(byte) div8u::divisor#0 divisor zp ZP_BYTE:20 13.3125
(byte) div8u::i
(byte) div8u::i#1 reg byte x 151.5
(byte) div8u::i#2 reg byte x 16.833333333333332
(byte) div8u::quotient
(byte) div8u::quotient#1 quotient zp ZP_BYTE:10 151.5
(byte) div8u::quotient#2 quotient zp ZP_BYTE:10 101.0
(byte) div8u::quotient#3 quotient zp ZP_BYTE:10 28.857142857142858
(byte) div8u::quotient#1 quotient zp ZP_BYTE:12 151.5
(byte) div8u::quotient#2 quotient zp ZP_BYTE:12 101.0
(byte) div8u::quotient#3 quotient zp ZP_BYTE:12 28.857142857142858
(byte) div8u::rem
(byte) div8u::rem#1 reg byte y 101.0
(byte) div8u::rem#2 reg byte y 202.0
@ -41,53 +75,29 @@
(byte*) div8u::remainder
(byte) div8u::return
(byte) div8u::return#0 reg byte a 22.0
(byte) div8u::return#1 return zp ZP_BYTE:10 52.33333333333333
(byte) div8u::return#1 return zp ZP_BYTE:12 52.33333333333333
(byte*) line_cursor
(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143
(byte*) line_cursor#13 line_cursor zp ZP_WORD:3 0.5416666666666666
(byte*) line_cursor#6 line_cursor zp ZP_WORD:3 204.0
(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 9.131578947368421
(byte*) line_cursor#11 line_cursor zp ZP_WORD:3 204.0
(byte*) line_cursor#22 line_cursor zp ZP_WORD:3 24.0
(byte*) line_cursor#25 line_cursor zp ZP_WORD:3 0.9565217391304348
(void()) main()
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@12
(label) main::@13
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@8
(label) main::@9
(label) main::@2
(label) main::@return
(byte) main::dividend
(byte) main::dividend#0 dividend zp ZP_BYTE:11 4.714285714285714
(byte[]) main::dividends
(const byte[]) main::dividends#0 dividends = { (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255 }
(byte) main::divisor
(byte) main::divisor#0 divisor zp ZP_BYTE:12 3.3000000000000003
(byte[]) main::divisors
(const byte[]) main::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
(byte) main::i
(byte) main::i#1 i zp ZP_BYTE:2 11.0
(byte) main::i#10 i zp ZP_BYTE:2 1.8333333333333333
(byte*) main::rem
(const byte*) main::rem#0 rem = ((byte*))(byte/word/signed word/dword/signed dword) 255
(byte) main::res
(byte) main::res#0 res zp ZP_BYTE:9 2.4444444444444446
(const string) main::str str = (string) " / @"
(const string) main::str1 str1 = (string) " = @"
(const string) main::str2 str2 = (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
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 reg byte x 22.0
(byte) print_byte::b#1 reg byte x 22.0
(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#3 reg byte x 22.0
(byte) print_byte::b#4 reg byte x 12.0
(byte) print_byte::b#4 reg byte x 22.0
(byte) print_byte::b#5 reg byte x 22.0
(byte) print_byte::b#6 reg byte x 13.0
(byte[]) print_byte::hextab
(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef"
(void()) print_char((byte) print_char::ch)
@ -110,23 +120,100 @@
(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#4 str zp ZP_WORD:7 101.5
(byte*) print_str::str#6 str zp ZP_WORD:7 2.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:5 11.0
(word) print_word::w#1 w zp ZP_WORD:5 22.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#4 w zp ZP_WORD:5 15.999999999999998
(word) rem16u
(word) rem16u#16 rem16u zp ZP_WORD:9 110.0
(void()) test_16u()
(label) test_16u::@1
(label) test_16u::@10
(label) test_16u::@11
(label) test_16u::@3
(label) test_16u::@4
(label) test_16u::@5
(label) test_16u::@6
(label) test_16u::@7
(label) test_16u::@8
(label) test_16u::@9
(label) test_16u::@return
(word) test_16u::dividend
(word) test_16u::dividend#0 dividend zp ZP_WORD:13 4.714285714285714
(word[]) test_16u::dividends
(const word[]) test_16u::dividends#0 dividends = { (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535 }
(word) test_16u::divisor
(word) test_16u::divisor#0 divisor zp ZP_WORD:15 3.0
(word[]) test_16u::divisors
(const word[]) test_16u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
(byte) test_16u::i
(byte) test_16u::i#1 i zp ZP_BYTE:2 16.5
(byte) test_16u::i#10 i zp ZP_BYTE:2 1.76
(word) test_16u::res
(word) test_16u::res#0 res zp ZP_WORD:17 2.2
(const string) test_16u::str str = (string) " / @"
(const string) test_16u::str1 str1 = (string) " = @"
(const string) test_16u::str2 str2 = (string) " @"
(void()) test_8u()
(label) test_8u::@1
(label) test_8u::@10
(label) test_8u::@11
(label) test_8u::@12
(label) test_8u::@3
(label) test_8u::@4
(label) test_8u::@5
(label) test_8u::@6
(label) test_8u::@7
(label) test_8u::@8
(label) test_8u::@9
(label) test_8u::@return
(byte) test_8u::dividend
(byte) test_8u::dividend#0 dividend zp ZP_BYTE:19 4.714285714285714
(byte[]) test_8u::dividends
(const byte[]) test_8u::dividends#0 dividends = { (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255 }
(byte) test_8u::divisor
(byte) test_8u::divisor#0 divisor zp ZP_BYTE:20 3.3000000000000003
(byte[]) test_8u::divisors
(const byte[]) test_8u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
(byte) test_8u::i
(byte) test_8u::i#1 i zp ZP_BYTE:2 11.0
(byte) test_8u::i#10 i zp ZP_BYTE:2 1.8333333333333333
(byte*) test_8u::rem
(const byte*) test_8u::rem#0 rem = ((byte*))(byte/word/signed word/dword/signed dword) 255
(byte) test_8u::res
(byte) test_8u::res#0 res zp ZP_BYTE:11 2.4444444444444446
(const string) test_8u::str str = (string) " / @"
(const string) test_8u::str1 str1 = (string) " = @"
(const string) test_8u::str2 str2 = (string) " @"
zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ]
reg byte x [ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ]
zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_str::str#7 print_str::str#9 print_str::str#0 div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 div16u::return#0 ]
reg byte x [ print_byte::b#6 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 ]
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
zp ZP_WORD:5 [ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ]
zp ZP_WORD:7 [ print_str::str#4 print_str::str#6 print_str::str#0 ]
zp ZP_WORD:7 [ char_cursor#45 char_cursor#72 char_cursor#71 char_cursor#84 char_cursor#2 char_cursor#11 char_cursor#75 char_cursor#1 char_cursor#98 div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ]
zp ZP_WORD:9 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ]
reg byte x [ div16u::i#2 div16u::i#1 ]
reg byte y [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ]
zp ZP_BYTE:9 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 main::res#0 ]
zp ZP_BYTE:10 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ]
zp ZP_BYTE:11 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 test_8u::res#0 ]
zp ZP_BYTE:12 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ]
reg byte x [ div8u::i#2 div8u::i#1 ]
zp ZP_BYTE:11 [ main::dividend#0 ]
zp ZP_BYTE:12 [ main::divisor#0 div8u::divisor#0 ]
reg byte a [ div8u::return#0 ]
zp ZP_WORD:13 [ test_16u::dividend#0 ]
zp ZP_WORD:15 [ test_16u::divisor#0 div16u::divisor#0 ]
zp ZP_WORD:17 [ test_16u::res#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ div16u::$1 ]
reg byte a [ div16u::$2 ]
zp ZP_BYTE:19 [ test_8u::dividend#0 ]
zp ZP_BYTE:20 [ test_8u::divisor#0 div8u::divisor#0 ]
reg byte a [ div8u::return#0 ]
reg byte a [ div8u::$1 ]