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

Added scaled sin generator - found problem with cast & precedence.

This commit is contained in:
jespergravgaard 2018-03-05 01:00:33 +01:00
parent 0663888a3f
commit f31eb7b1f0
21 changed files with 19434 additions and 2967 deletions

View File

@ -0,0 +1,2 @@
cmp {c1}
beq {la1}

View File

@ -0,0 +1,2 @@
cpx {c1}
beq {la1}

View File

@ -0,0 +1,2 @@
cpy {c1}
beq {la1}

View File

@ -203,6 +203,7 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
case "((dword))":
case "((signed dword))":
case "((byte*))":
case "!":
return new ConstantUnary(operator, c);
case "*": { // pointer dereference - not constant
return null;
@ -232,6 +233,12 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
case "^":
case "<<":
case ">>":
case "==":
case "!=":
case ">":
case "<":
case ">=":
case "<=":
return new ConstantBinary(c1, operator, c2);
case "w=":
return new ConstantBinary(new ConstantBinary(c1, Operator.MULTIPLY, new ConstantInteger(256L)), Operator.PLUS, c2);

View File

@ -45,6 +45,11 @@ public class TestPrograms {
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
}
@Test
public void testCastPrecedenceProblem() throws IOException, URISyntaxException {
compileAndCompare("cast-precedence-problem");
}
@Test
public void testLoopProblem() throws IOException, URISyntaxException {
compileAndCompare("loop-problem");
@ -60,6 +65,11 @@ public class TestPrograms {
compileAndCompare("sinusgen16");
}
@Test
public void testSinusGen16b() throws IOException, URISyntaxException {
compileAndCompare("sinusgen16b");
}
@Test
public void testSinusGenScale8() throws IOException, URISyntaxException {
compileAndCompare("sinusgenscale8");

View File

@ -0,0 +1,19 @@
// Tests that casting inside constants in the output handles precedence between rol >> and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1
void main() {
byte* SCREEN = $400;
byte min = 10;
byte max = 200;
word sumw = min+max;
byte midw = (byte)(sumw>>1)+1;
SCREEN[0] = midw;
byte sumb = min+max;
byte midb = (sumb>>1)+1;
SCREEN[1] = midb;
byte* BGCOL = $d021;
if(SCREEN[0]==SCREEN[1]) {
*BGCOL = 5;
} else {
*BGCOL = 2;
}
}

View File

@ -0,0 +1,52 @@
// Sinus Generator functions using only multiplication, addition and bit shifting
// Uses a single division for converting the wavelength to a reciprocal.
// Generates sinus using the series sin(x) = x - x^/3! + x^-5! - x^7/7! ...
// Uses the approximation sin(x) = x - x^/6 + x^/128
// Optimization possibility: Use symmetries when generating sinustables. wavelength%2==0 -> mirror symmetry over PI, wavelength%4==0 -> mirror symmetry over PI/2.
import "sinus.kc"
// Generate signed (large) word sinus table - on the full -$7fff - $7fff range
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16s_genb(signed word* sintab, word wavelength) {
// u[4.28] step = PI*2/wavelength
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// Iterate over the table
dword x = 0; // u[4.28]
for( word i=0; i<wavelength; i++) {
*sintab = sin16sb(>x);
sintab = sintab + 2;
x = x + step;
}
}
// Calculate signed word sinus sin(x)
// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28
// result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff
signed word sin16sb(word x) {
// Move x1 into the range 0-PI/2 using sinus mirror symmetries
byte isUpper = 0;
if(x >= PI_u4f12 ) {
x = x - PI_u4f12;
isUpper = 1;
}
if(x >= PI_HALF_u4f12 ) {
x = PI_u4f12 - x;
}
// sinx = x - x^3/6 + x5/128;
word x1 = x<<3; // u[1.15]
word x2 = mulu16_sel(x1, x1, 0); // u[2.14] x^2
word x3 = mulu16_sel(x2, x1, 1); // u[2.14] x^3
word x3_6 = mulu16_sel(x3, $10000/6, 1); // u[1.15] x^3/6;
word usinx = x1 - x3_6; // u[1.15] x - x^3/6
word x4 = mulu16_sel(x3, x1, 0); // u[3.13] x^4
word x5 = mulu16_sel(x4, x1, 0); // u[4.12] x^5
word x5_128 = x5>>4; // // u[1.15] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3);
usinx = usinx + x5_128; // u[1.15] (first bit is always zero)
signed word sinx = (signed word)usinx; // s[0.15]
if(isUpper!=0) {
sinx = -(signed word)usinx; // s[0.15];
}
return sinx;
}

View File

@ -0,0 +1,25 @@
// Generates a 16-bit signed sinus
import "sinus.kc"
import "sinusb.kc"
import "print.kc"
void main() {
word wavelength = 120;
signed word[120] sintab1;
signed word[120] sintab2;
sin16s_gen(sintab1, wavelength);
sin16s_genb(sintab2, wavelength);
print_cls();
signed word* st1 = sintab1;
signed word* st2 = sintab2;
for( byte i: 0..119) {
signed word sw = *st1 - *st2;
if(sw>=0) {
print_str(" @");
}
print_sword(sw);
print_str(" @");
st1 = st1+2;
st2 = st2+2;
}
}

View File

@ -28,7 +28,8 @@ void main() {
void sin8u_table(byte* sintab, word tabsize, byte min, byte max) {
byte amplitude = max-min;
word sum = min+max;
byte mid = (byte)(sum>>1);
byte mid = (byte)((sum>>1)+1);
//if( sum & 1 > 0) mid++;
// u[4.28] step = PI*2/wavelength
word step = div16u(PI2_u4f12, tabsize); // u[4.12]
print_str("step:@");
@ -45,12 +46,18 @@ void sin8u_table(byte* sintab, word tabsize, byte min, byte max) {
// Iterate over the table
word x = 0; // u[4.12]
for( word i=0; i<tabsize; i++) {
byte sinval = mid+>mul8su(sin8s(x), amplitude);
*sintab++ = sinval;
signed byte sinx = sin8s(x);
signed word sinx_sc = mul8su(sinx, amplitude+1);
byte sinx_tr = mid+>sinx_sc;
*sintab++ = sinx_tr;
print_str("x: @");
print_word(x);
print_str(" sin: @");
print_byte(sinval);
print_sbyte(sinx);
print_str(" scaled: @");
print_sword(sinx_sc);
print_str(" trans: @");
print_byte(sinx_tr);
print_ln();
x = x + step;
}

View File

@ -0,0 +1,31 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
jsr main
main: {
.label SCREEN = $400
.const min = $a
.const max = $c8
.label BGCOL = $d021
.const sumw = min+max
.const sumb = min+max
.const midb = (sumb>>1)+1
.const midw = $ff & sumw>>1+1
lda #midw
sta SCREEN+0
lda #midb
sta SCREEN+1
ldx SCREEN+0
tay
stx $ff
cpy $ff
bne b1
lda #5
sta BGCOL
breturn:
rts
b1:
lda #2
sta BGCOL
jmp breturn
}

View File

@ -0,0 +1,23 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@1
@1: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @1
[3] phi() [ ] ( )
main: scope:[main] from @1
[4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] )
[5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] )
[6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] )
to:main::@3
main::@3: scope:[main] from main
[7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@1 main::@3
[8] return [ ] ( main:2 [ ] )
to:@return
main::@1: scope:[main] from main
[9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] )
to:main::@return

View File

@ -0,0 +1,808 @@
PARSING src/test/java/dk/camelot64/kickc/test/kc/cast-precedence-problem.kc
// Tests that casting inside constants in the output handles precedence between rol >> and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1
void main() {
byte* SCREEN = $400;
byte min = 10;
byte max = 200;
word sumw = min+max;
byte midw = (byte)(sumw>>1)+1;
SCREEN[0] = midw;
byte sumb = min+max;
byte midb = (sumb>>1)+1;
SCREEN[1] = midb;
byte* BGCOL = $d021;
if(SCREEN[0]==SCREEN[1]) {
*BGCOL = 5;
} else {
*BGCOL = 2;
}
}
STATEMENTS
proc (void()) main()
(byte*) main::SCREEN ← (word/signed word/dword/signed dword) 1024
(byte) main::min ← (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) main::max ← (byte/word/signed word/dword/signed dword) 200
(byte/word~) main::$0 ← (byte) main::min + (byte) main::max
(word) main::sumw ← (byte/word~) main::$0
(word~) main::$1 ← (word) main::sumw >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte~) main::$2 ← ((byte)) (word~) main::$1
(byte/word~) main::$3 ← (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midw ← (byte/word~) main::$3
*((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::midw
(byte/word~) main::$4 ← (byte) main::min + (byte) main::max
(byte) main::sumb ← (byte/word~) main::$4
(byte~) main::$5 ← (byte) main::sumb >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte/word~) main::$6 ← (byte~) main::$5 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midb ← (byte/word~) main::$6
*((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::midb
(byte*) main::BGCOL ← (word/dword/signed dword) 53281
(boolean~) main::$7 ← *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1)
(boolean~) main::$8 ← ! (boolean~) main::$7
if((boolean~) main::$8) goto main::@1
*((byte*) main::BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 5
goto main::@2
main::@1:
*((byte*) main::BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 2
main::@2:
main::@return:
return
endproc // main()
call main
SYMBOLS
(void()) main()
(byte/word~) main::$0
(word~) main::$1
(byte~) main::$2
(byte/word~) main::$3
(byte/word~) main::$4
(byte~) main::$5
(byte/word~) main::$6
(boolean~) main::$7
(boolean~) main::$8
(label) main::@1
(label) main::@2
(label) main::@return
(byte*) main::BGCOL
(byte*) main::SCREEN
(byte) main::max
(byte) main::midb
(byte) main::midw
(byte) main::min
(byte) main::sumb
(word) main::sumw
Promoting word/signed word/dword/signed dword to byte* in main::SCREEN ← ((byte*)) 1024
Promoting word/dword/signed dword to byte* in main::BGCOL ← ((byte*)) 53281
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from
(byte*) main::SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte) main::min ← (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) main::max ← (byte/word/signed word/dword/signed dword) 200
(byte/word~) main::$0 ← (byte) main::min + (byte) main::max
(word) main::sumw ← (byte/word~) main::$0
(word~) main::$1 ← (word) main::sumw >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte~) main::$2 ← ((byte)) (word~) main::$1
(byte/word~) main::$3 ← (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midw ← (byte/word~) main::$3
*((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::midw
(byte/word~) main::$4 ← (byte) main::min + (byte) main::max
(byte) main::sumb ← (byte/word~) main::$4
(byte~) main::$5 ← (byte) main::sumb >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte/word~) main::$6 ← (byte~) main::$5 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midb ← (byte/word~) main::$6
*((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::midb
(byte*) main::BGCOL ← ((byte*)) (word/dword/signed dword) 53281
(boolean~) main::$7 ← *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1)
(boolean~) main::$8 ← ! (boolean~) main::$7
if((boolean~) main::$8) goto main::@1
to:main::@3
main::@1: scope:[main] from main main::@4
*((byte*) main::BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 2
to:main::@2
main::@3: scope:[main] from main
*((byte*) main::BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 5
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@4: scope:[main] from
to:main::@1
main::@return: scope:[main] from main::@2
return
to:@return
@1: scope:[] from @begin
call main
to:@end
@end: scope:[] from @1
Removing empty block main::@2
Removing empty block main::@4
PROCEDURE MODIFY VARIABLE ANALYSIS
Completing Phi functions...
CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(byte*) main::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte) main::min#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) main::max#0 ← (byte/word/signed word/dword/signed dword) 200
(byte/word~) main::$0 ← (byte) main::min#0 + (byte) main::max#0
(word) main::sumw#0 ← (byte/word~) main::$0
(word~) main::$1 ← (word) main::sumw#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte~) main::$2 ← ((byte)) (word~) main::$1
(byte/word~) main::$3 ← (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midw#0 ← (byte/word~) main::$3
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::midw#0
(byte/word~) main::$4 ← (byte) main::min#0 + (byte) main::max#0
(byte) main::sumb#0 ← (byte/word~) main::$4
(byte~) main::$5 ← (byte) main::sumb#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte/word~) main::$6 ← (byte~) main::$5 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midb#0 ← (byte/word~) main::$6
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::midb#0
(byte*) main::BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
(boolean~) main::$7 ← *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
(boolean~) main::$8 ← ! (boolean~) main::$7
if((boolean~) main::$8) goto main::@1
to:main::@3
main::@1: scope:[main] from main
(byte*) main::BGCOL#1 ← phi( main/(byte*) main::BGCOL#0 )
*((byte*) main::BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 2
to:main::@return
main::@3: scope:[main] from main
(byte*) main::BGCOL#2 ← phi( main/(byte*) main::BGCOL#0 )
*((byte*) main::BGCOL#2) ← (byte/signed byte/word/signed word/dword/signed dword) 5
to:main::@return
main::@return: scope:[main] from main::@1 main::@3
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@2
@2: scope:[] from @1
to:@end
@end: scope:[] from @2
SYMBOL TABLE SSA
(label) @1
(label) @2
(label) @begin
(label) @end
(void()) main()
(byte/word~) main::$0
(word~) main::$1
(byte~) main::$2
(byte/word~) main::$3
(byte/word~) main::$4
(byte~) main::$5
(byte/word~) main::$6
(boolean~) main::$7
(boolean~) main::$8
(label) main::@1
(label) main::@3
(label) main::@return
(byte*) main::BGCOL
(byte*) main::BGCOL#0
(byte*) main::BGCOL#1
(byte*) main::BGCOL#2
(byte*) main::SCREEN
(byte*) main::SCREEN#0
(byte) main::max
(byte) main::max#0
(byte) main::midb
(byte) main::midb#0
(byte) main::midw
(byte) main::midw#0
(byte) main::min
(byte) main::min#0
(byte) main::sumb
(byte) main::sumb#0
(word) main::sumw
(word) main::sumw#0
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (boolean~) main::$8 ← *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) != *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) from (boolean~) main::$7 ← *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
Succesful SSA optimization Pass2UnaryNotSimplification
Alias (word) main::sumw#0 = (byte/word~) main::$0
Alias (byte) main::midw#0 = (byte/word~) main::$3
Alias (byte) main::sumb#0 = (byte/word~) main::$4
Alias (byte) main::midb#0 = (byte/word~) main::$6
Alias (byte*) main::BGCOL#0 = (byte*) main::BGCOL#1 (byte*) main::BGCOL#2
Succesful SSA optimization Pass2AliasElimination
Simple Condition (boolean~) main::$8 if(*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0)!=*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Constant (const byte) main::min#0 = 10
Constant (const byte) main::max#0 = 200
Constant (const byte*) main::BGCOL#0 = ((byte*))53281
Succesful SSA optimization Pass2ConstantIdentification
Constant (const word) main::sumw#0 = main::min#0+main::max#0
Constant (const byte) main::sumb#0 = main::min#0+main::max#0
Succesful SSA optimization Pass2ConstantIdentification
Constant (const word) main::$1 = main::sumw#0>>1
Constant (const byte) main::$5 = main::sumb#0>>1
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$2 = ((byte))main::$1
Constant (const byte) main::midb#0 = main::$5+1
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::midw#0 = main::$2+1
Succesful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::SCREEN#0+0)
Consolidated array index constant in *(main::SCREEN#0+1)
Consolidated array index constant in *(main::SCREEN#0+0)
Consolidated array index constant in *(main::SCREEN#0+1)
Succesful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$5 = (const byte) main::sumb#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::$1 = (const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::$2 = ((byte))(const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
CALL GRAPH
Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@1
@1: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @1
[3] phi() [ ] ( )
main: scope:[main] from @1
[4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] )
[5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] )
[6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] )
to:main::@3
main::@3: scope:[main] from main
[7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@1 main::@3
[8] return [ ] ( main:2 [ ] )
to:@return
main::@1: scope:[main] from main
[9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] )
to:main::@return
DOMINATORS
@begin dominated by @begin
@1 dominated by @1 @begin
@end dominated by @1 @begin @end
main dominated by @1 @begin main
main::@3 dominated by @1 @begin main main::@3
main::@return dominated by main::@return @1 @begin main
main::@1 dominated by @1 @begin main::@1 main
NATURAL LOOPS
NATURAL LOOPS WITH DEPTH
Found 0 loops in scope []
Found 0 loops in scope [main]
VARIABLE REGISTER WEIGHTS
(void()) main()
(byte*) main::BGCOL
(byte*) main::SCREEN
(byte) main::max
(byte) main::midb
(byte) main::midw
(byte) main::min
(byte) main::sumb
(word) main::sumw
Initial phi equivalence classes
Complete equivalence classes
New fragment synthesis _deref_pbuc1=vbuc2
New fragment synthesis _deref_pbuc1=vbuc2 - sub-option vbuaa=vbuc1
New fragment synthesis vbuaa=vbuc1
New fragment synthesis vbuaa=vbuc1 - Successfully loaded vbuaa=vbuc1.asm
New fragment synthesis vbuaa=vbuc1 - sub-option vbuaa=vbuaa
New fragment synthesis vbuaa=vbuaa
New fragment synthesis vbuaa=vbuaa - Successfully loaded vbuaa=vbuaa.asm
Fragment synthesis vbuaa=vbuaa - New best, scheduling parent vbuaa=vbuc1
Fragment synthesis vbuaa=vbuc1 - Successfully synthesized from vbuaa=vbuaa
Fragment synthesis vbuaa=vbuc1 - New best, scheduling parent _deref_pbuc1=vbuc2
Fragment synthesis _deref_pbuc1=vbuc2 - Successfully synthesized from vbuaa=vbuc1
Found best fragment _deref_pbuc1=vbuc2 < vbuaa=vbuc1 score: 6.5
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option _deref_pbuc2_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option _deref_pbuc2_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option vbuxx_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option vbuyy_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq__deref_pbuc2_then_la1
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq__deref_pbuc2_then_la1
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuxx_then_la1
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuyy_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option _deref_pbuc1_neq_vbuxx_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option _deref_pbuc1_neq_vbuyy_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option vbuxx_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option vbuxx_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuxx_then_la1
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuxx_then_la1
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option vbuxx_neq__deref_pbuc1_then_la1
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option vbuyy_neq__deref_pbuc1_then_la1
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuyy_then_la1
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuyy_then_la1
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option vbuyy_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option vbuyy_neq__deref_pbuc1_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
New fragment synthesis vbuaa_neq_vbuyy_then_la1
New fragment synthesis vbuaa_neq_vbuyy_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
New fragment synthesis vbuaa_neq_vbuyy_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
New fragment synthesis vbuaa_neq_vbuyy_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
New fragment synthesis vbuxx_neq_vbuyy_then_la1
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully loaded vbuxx_neq_vbuyy_then_la1.asm
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
New fragment synthesis vbuxx_neq_vbuaa_then_la1
New fragment synthesis vbuxx_neq_vbuaa_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
New fragment synthesis vbuxx_neq_vbuaa_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
New fragment synthesis vbuxx_neq_vbuaa_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
New fragment synthesis vbuaa_neq_vbuxx_then_la1
New fragment synthesis vbuaa_neq_vbuxx_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
New fragment synthesis vbuaa_neq_vbuxx_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
New fragment synthesis vbuaa_neq_vbuxx_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
New fragment synthesis vbuyy_neq_vbuxx_then_la1
New fragment synthesis vbuyy_neq_vbuxx_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
New fragment synthesis vbuyy_neq_vbuxx_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
New fragment synthesis vbuyy_neq_vbuxx_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
New fragment synthesis vbuyy_neq_vbuxx_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
New fragment synthesis vbuyy_neq_vbuaa_then_la1
New fragment synthesis vbuyy_neq_vbuaa_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
New fragment synthesis vbuyy_neq_vbuaa_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
New fragment synthesis vbuyy_neq_vbuaa_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - No file or synthesis results!
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - No file or synthesis results!
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - No file or synthesis results!
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - No file or synthesis results!
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuaa_neq_vbuyy_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuyy_neq_vbuaa_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from _deref_pbuc2_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from _deref_pbuc2_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq__deref_pbuc2_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq__deref_pbuc2_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
Found best fragment _deref_pbuc1_neq__deref_pbuc2_then_la1 < _deref_pbuc2_neq__deref_pbuc1_then_la1 < _deref_pbuc1_neq_vbuxx_then_la1 < vbuxx_neq__deref_pbuc1_then_la1 < vbuxx_neq_vbuyy_then_la1 score: 19.0
INITIAL ASM
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
b1_from_bbegin:
jmp b1
//SEG4 @1
b1:
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
bend_from_b1:
jmp bend
//SEG7 @end
bend:
//SEG8 main
main: {
.label SCREEN = $400
.const min = $a
.const max = $c8
.label BGCOL = $d021
.const sumw = min+max
.const sumb = min+max
.const midb = (sumb>>1)+1
.const midw = $ff & sumw>>1+1
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN+0
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midb
sta SCREEN+1
//SEG11 [6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq__deref_pbuc2_then_la1
ldx SCREEN+0
ldy SCREEN+1
stx $ff
cpy $ff
bne b1
jmp b3
//SEG12 main::@3
b3:
//SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #5
sta BGCOL
jmp breturn
//SEG14 main::@return
breturn:
//SEG15 [8] return [ ] ( main:2 [ ] )
rts
//SEG16 main::@1
b1:
//SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #2
sta BGCOL
jmp breturn
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte x reg byte y
Statement [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a
REGISTER UPLIFT SCOPES
Uplift Scope [main]
Uplift Scope []
Uplifting [main] best 67 combination
Uplifting [] best 67 combination
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
b1_from_bbegin:
jmp b1
//SEG4 @1
b1:
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
bend_from_b1:
jmp bend
//SEG7 @end
bend:
//SEG8 main
main: {
.label SCREEN = $400
.const min = $a
.const max = $c8
.label BGCOL = $d021
.const sumw = min+max
.const sumb = min+max
.const midb = (sumb>>1)+1
.const midw = $ff & sumw>>1+1
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN+0
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midb
sta SCREEN+1
//SEG11 [6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq__deref_pbuc2_then_la1
ldx SCREEN+0
ldy SCREEN+1
stx $ff
cpy $ff
bne b1
jmp b3
//SEG12 main::@3
b3:
//SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #5
sta BGCOL
jmp breturn
//SEG14 main::@return
breturn:
//SEG15 [8] return [ ] ( main:2 [ ] )
rts
//SEG16 main::@1
b1:
//SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #2
sta BGCOL
jmp breturn
}
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
Removing instruction jmp bend
Removing instruction jmp b3
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Replacing instruction ldy SCREEN+1 with TAY
Removing instruction bbegin:
Removing instruction b1_from_bbegin:
Removing instruction bend_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b1:
Removing instruction bend:
Removing instruction b3:
Succesful ASM optimization Pass5UnusedLabelElimination
FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(void()) main()
(label) main::@1
(label) main::@3
(label) main::@return
(byte*) main::BGCOL
(const byte*) main::BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
(byte*) main::SCREEN
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte) main::max
(const byte) main::max#0 max = (byte/word/signed word/dword/signed dword) 200
(byte) main::midb
(const byte) main::midb#0 midb = (const byte) main::sumb#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midw
(const byte) main::midw#0 midw = ((byte))(const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::min
(const byte) main::min#0 min = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) main::sumb
(const byte) main::sumb#0 sumb = (const byte) main::min#0+(const byte) main::max#0
(word) main::sumw
(const word) main::sumw#0 sumw = (const byte) main::min#0+(const byte) main::max#0
FINAL ASSEMBLER
Score: 53
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
//SEG2 @begin
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
//SEG4 @1
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
//SEG7 @end
//SEG8 main
main: {
.label SCREEN = $400
.const min = $a
.const max = $c8
.label BGCOL = $d021
.const sumw = min+max
.const sumb = min+max
.const midb = (sumb>>1)+1
.const midw = $ff & sumw>>1+1
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN+0
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midb
sta SCREEN+1
//SEG11 [6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq__deref_pbuc2_then_la1
ldx SCREEN+0
tay
stx $ff
cpy $ff
bne b1
//SEG12 main::@3
//SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #5
sta BGCOL
//SEG14 main::@return
breturn:
//SEG15 [8] return [ ] ( main:2 [ ] )
rts
//SEG16 main::@1
b1:
//SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #2
sta BGCOL
jmp breturn
}

View File

@ -0,0 +1,24 @@
(label) @1
(label) @begin
(label) @end
(void()) main()
(label) main::@1
(label) main::@3
(label) main::@return
(byte*) main::BGCOL
(const byte*) main::BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
(byte*) main::SCREEN
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte) main::max
(const byte) main::max#0 max = (byte/word/signed word/dword/signed dword) 200
(byte) main::midb
(const byte) main::midb#0 midb = (const byte) main::sumb#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midw
(const byte) main::midw#0 midw = ((byte))(const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::min
(const byte) main::min#0 min = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) main::sumb
(const byte) main::sumb#0 sumb = (const byte) main::min#0+(const byte) main::max#0
(word) main::sumw
(const word) main::sumw#0 sumw = (const byte) main::min#0+(const byte) main::max#0

View File

@ -0,0 +1,815 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.const PI2_u4f28 = $6487ed51
.const PI_u4f28 = $3243f6a9
.const PI_HALF_u4f28 = $1921fb54
.const PI_u4f12 = $3244
.const PI_HALF_u4f12 = $1922
.label SCREEN = $400
.label char_cursor = $b
.label rem16u = 4
jsr main
main: {
.label wavelength = $78
.label sw = 8
.label st1 = 2
.label st2 = 4
jsr sin16s_gen
jsr sin16s_genb
jsr print_cls
ldx #0
lda #<SCREEN
sta char_cursor
lda #>SCREEN
sta char_cursor+1
lda #<sintab2
sta st2
lda #>sintab2
sta st2+1
lda #<sintab1
sta st1
lda #>sintab1
sta st1+1
b1:
ldy #0
sec
lda (st1),y
sbc (st2),y
sta sw
iny
lda (st1),y
sbc (st2),y
sta sw+1
bmi b2
lda #<str1
sta print_str.str
lda #>str1
sta print_str.str+1
jsr print_str
b2:
jsr print_sword
lda #<str
sta print_str.str
lda #>str
sta print_str.str+1
jsr print_str
clc
lda st1
adc #<2
sta st1
lda st1+1
adc #>2
sta st1+1
clc
lda st2
adc #<2
sta st2
lda st2+1
adc #>2
sta st2+1
inx
cpx #$78
bne b1
rts
str: .text " @"
str1: .text " @"
sintab1: .fill $f0, 0
sintab2: .fill $f0, 0
}
print_str: {
.label str = 6
b1:
ldy #0
lda (str),y
cmp #'@'
bne b2
rts
b2:
ldy #0
lda (str),y
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
inc str
bne !+
inc str+1
!:
jmp b1
}
print_sword: {
.label w = 8
lda w+1
bpl b1
lda #'-'
jsr print_char
sec
lda w
eor #$ff
adc #0
sta w
lda w+1
eor #$ff
adc #0
sta w+1
b1:
jsr print_word
rts
}
print_word: {
lda print_sword.w+1
sta print_byte.b
jsr print_byte
lda print_sword.w
sta print_byte.b
jsr print_byte
rts
}
print_byte: {
.label b = $a
lda b
lsr
lsr
lsr
lsr
tay
lda hextab,y
jsr print_char
lda #$f
and b
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_cls: {
.label sc = 2
lda #<SCREEN
sta sc
lda #>SCREEN
sta sc+1
b1:
lda #' '
ldy #0
sta (sc),y
inc sc
bne !+
inc sc+1
!:
lda sc+1
cmp #>SCREEN+$3e8
bne b1
lda sc
cmp #<SCREEN+$3e8
bne b1
rts
}
sin16s_genb: {
.label _2 = 8
.label step = $1d
.label sintab = 2
.label x = $d
.label i = 4
lda #<main.wavelength
sta div32u16u.divisor
lda #>main.wavelength
sta div32u16u.divisor+1
lda #<PI2_u4f28
sta div32u16u.dividend
lda #>PI2_u4f28
sta div32u16u.dividend+1
lda #<PI2_u4f28>>$10
sta div32u16u.dividend+2
lda #>PI2_u4f28>>$10
sta div32u16u.dividend+3
jsr div32u16u
lda #<0
sta i
sta i+1
lda #<main.sintab2
sta sintab
lda #>main.sintab2
sta sintab+1
lda #0
sta x
sta x+1
sta x+2
sta x+3
b1:
lda x+2
sta sin16sb.x
lda x+3
sta sin16sb.x+1
jsr sin16sb
ldy #0
lda _2
sta (sintab),y
iny
lda _2+1
sta (sintab),y
clc
lda sintab
adc #<2
sta sintab
lda sintab+1
adc #>2
sta sintab+1
lda x
clc
adc step
sta x
lda x+1
adc step+1
sta x+1
lda x+2
adc step+2
sta x+2
lda x+3
adc step+3
sta x+3
inc i
bne !+
inc i+1
!:
lda i+1
cmp #>main.wavelength
bcc b1
bne !+
lda i
cmp #<main.wavelength
bcc b1
!:
rts
}
sin16sb: {
.label x = 6
.label return = 8
.label x1 = 6
.label x2 = $b
.label x3 = $b
.label x3_6 = $11
.label usinx = 8
.label x4 = $b
.label x5 = $11
.label x5_128 = $11
.label sinx = 8
.label isUpper = $a
lda x+1
cmp #>PI_u4f12
bcc b4
bne !+
lda x
cmp #<PI_u4f12
bcc b4
!:
lda x
sec
sbc #<PI_u4f12
sta x
lda x+1
sbc #>PI_u4f12
sta x+1
lda #1
sta isUpper
jmp b1
b4:
lda #0
sta isUpper
b1:
lda x+1
cmp #>PI_HALF_u4f12
bcc b2
bne !+
lda x
cmp #<PI_HALF_u4f12
bcc b2
!:
sec
lda #<PI_u4f12
sbc x
sta x
lda #>PI_u4f12
sbc x+1
sta x+1
b2:
asl x1
rol x1+1
asl x1
rol x1+1
asl x1
rol x1+1
lda x1
sta mulu16_sel.v1
lda x1+1
sta mulu16_sel.v1+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
lda mulu16_sel.return_18
sta x2
lda mulu16_sel.return_18+1
sta x2+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #1
jsr mulu16_sel
lda mulu16_sel.return_17
sta mulu16_sel.return
lda mulu16_sel.return_17+1
sta mulu16_sel.return+1
ldx #1
lda #<$10000/6
sta mulu16_sel.v2
lda #>$10000/6
sta mulu16_sel.v2+1
jsr mulu16_sel
lda x1
sec
sbc x3_6
sta usinx
lda x1+1
sbc x3_6+1
sta usinx+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
lda mulu16_sel.return_17
sta mulu16_sel.return
lda mulu16_sel.return_17+1
sta mulu16_sel.return+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
ldy #4
!:
lsr x5_128+1
ror x5_128
dey
bne !-
lda usinx
clc
adc x5_128
sta usinx
lda usinx+1
adc x5_128+1
sta usinx+1
lda isUpper
beq b3
sec
lda sinx
eor #$ff
adc #0
sta sinx
lda sinx+1
eor #$ff
adc #0
sta sinx+1
b3:
rts
}
mulu16_sel: {
.label _0 = $15
.label _1 = $15
.label v1 = $b
.label v2 = $11
.label return = $b
.label return_11 = $11
.label return_14 = $11
.label return_16 = $11
.label return_17 = $11
.label return_18 = $11
.label return_20 = $11
lda v1
sta mul16u.a
lda v1+1
sta mul16u.a+1
jsr mul16u
cpx #0
beq !e+
!:
asl _1
rol _1+1
rol _1+2
rol _1+3
dex
bne !-
!e:
lda _1+2
sta return_17
lda _1+3
sta return_17+1
rts
}
mul16u: {
.label mb = $19
.label a = $13
.label res = $15
.label b = $11
.label return = $15
lda b
sta mb
lda b+1
sta mb+1
lda #0
sta mb+2
sta mb+3
sta res
sta res+1
sta res+2
sta res+3
b1:
lda a
bne b2
lda a+1
bne b2
rts
b2:
lda a
and #1
cmp #0
beq b4
lda res
clc
adc mb
sta res
lda res+1
adc mb+1
sta res+1
lda res+2
adc mb+2
sta res+2
lda res+3
adc mb+3
sta res+3
b4:
clc
ror a+1
ror a
asl mb
rol mb+1
rol mb+2
rol mb+3
jmp b1
}
div32u16u: {
.label quotient_hi = $b
.label quotient_lo = 8
.label return = $1d
.label dividend = $d
.label divisor = 2
lda dividend+2
sta divr16u.dividend
lda dividend+3
sta divr16u.dividend+1
lda #<0
sta divr16u.rem
sta divr16u.rem+1
jsr divr16u
lda divr16u.return
sta quotient_hi
lda divr16u.return+1
sta quotient_hi+1
lda dividend
sta divr16u.dividend
lda dividend+1
sta divr16u.dividend+1
jsr divr16u
lda quotient_hi
sta return+2
lda quotient_hi+1
sta return+3
lda quotient_lo
sta return
lda quotient_lo+1
sta return+1
rts
}
divr16u: {
.label rem = 4
.label dividend = 6
.label quotient = 8
.label return = 8
.label divisor = 2
ldx #0
txa
sta quotient
sta quotient+1
b1:
asl rem
rol rem+1
lda dividend+1
and #$80
cmp #0
beq b2
lda #1
ora rem
sta rem
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
}
sin16s_gen: {
.label _1 = 8
.label step = $1d
.label sintab = 2
.label x = $d
.label i = 6
lda #<0
sta rem16u
sta rem16u+1
lda #<main.wavelength
sta div32u16u.divisor
lda #>main.wavelength
sta div32u16u.divisor+1
lda #<PI2_u4f28
sta div32u16u.dividend
lda #>PI2_u4f28
sta div32u16u.dividend+1
lda #<PI2_u4f28>>$10
sta div32u16u.dividend+2
lda #>PI2_u4f28>>$10
sta div32u16u.dividend+3
jsr div32u16u
lda #<0
sta i
sta i+1
lda #<main.sintab1
sta sintab
lda #>main.sintab1
sta sintab+1
lda #0
sta x
sta x+1
sta x+2
sta x+3
b1:
lda x
sta sin16s.x
lda x+1
sta sin16s.x+1
lda x+2
sta sin16s.x+2
lda x+3
sta sin16s.x+3
jsr sin16s
ldy #0
lda _1
sta (sintab),y
iny
lda _1+1
sta (sintab),y
clc
lda sintab
adc #<2
sta sintab
lda sintab+1
adc #>2
sta sintab+1
lda x
clc
adc step
sta x
lda x+1
adc step+1
sta x+1
lda x+2
adc step+2
sta x+2
lda x+3
adc step+3
sta x+3
inc i
bne !+
inc i+1
!:
lda i+1
cmp #>main.wavelength
bcc b1
bne !+
lda i
cmp #<main.wavelength
bcc b1
!:
rts
}
sin16s: {
.label _6 = $15
.label x = $15
.label return = 8
.label x1 = $21
.label x2 = $b
.label x3 = $b
.label x3_6 = $11
.label usinx = 8
.label x4 = $b
.label x5 = $11
.label x5_128 = $11
.label sinx = 8
.label isUpper = $a
lda x+3
cmp #>PI_u4f28>>$10
bcc b4
bne !+
lda x+2
cmp #<PI_u4f28>>$10
bcc b4
bne !+
lda x+1
cmp #>PI_u4f28
bcc b4
bne !+
lda x
cmp #<PI_u4f28
bcc b4
!:
lda x
sec
sbc #<PI_u4f28
sta x
lda x+1
sbc #>PI_u4f28
sta x+1
lda x+2
sbc #<PI_u4f28>>$10
sta x+2
lda x+3
sbc #>PI_u4f28>>$10
sta x+3
lda #1
sta isUpper
jmp b1
b4:
lda #0
sta isUpper
b1:
lda x+3
cmp #>PI_HALF_u4f28>>$10
bcc b2
bne !+
lda x+2
cmp #<PI_HALF_u4f28>>$10
bcc b2
bne !+
lda x+1
cmp #>PI_HALF_u4f28
bcc b2
bne !+
lda x
cmp #<PI_HALF_u4f28
bcc b2
!:
lda #<PI_u4f28
sec
sbc x
sta x
lda #>PI_u4f28
sbc x+1
sta x+1
lda #<PI_u4f28>>$10
sbc x+2
sta x+2
lda #>PI_u4f28>>$10
sbc x+3
sta x+3
b2:
ldy #3
!:
asl _6
rol _6+1
rol _6+2
rol _6+3
dey
bne !-
lda _6+2
sta x1
lda _6+3
sta x1+1
lda x1
sta mulu16_sel.v1
lda x1+1
sta mulu16_sel.v1+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
lda mulu16_sel.return_17
sta mulu16_sel.return
lda mulu16_sel.return_17+1
sta mulu16_sel.return+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #1
jsr mulu16_sel
lda mulu16_sel.return_17
sta mulu16_sel.return
lda mulu16_sel.return_17+1
sta mulu16_sel.return+1
ldx #1
lda #<$10000/6
sta mulu16_sel.v2
lda #>$10000/6
sta mulu16_sel.v2+1
jsr mulu16_sel
lda x1
sec
sbc x3_6
sta usinx
lda x1+1
sbc x3_6+1
sta usinx+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
lda mulu16_sel.return_17
sta mulu16_sel.return
lda mulu16_sel.return_17+1
sta mulu16_sel.return+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
ldy #4
!:
lsr x5_128+1
ror x5_128
dey
bne !-
lda usinx
clc
adc x5_128
sta usinx
lda usinx+1
adc x5_128+1
sta usinx+1
lda isUpper
beq b3
sec
lda sinx
eor #$ff
adc #0
sta sinx
lda sinx+1
eor #$ff
adc #0
sta sinx+1
b3:
rts
}

View File

@ -0,0 +1,426 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@31
@31: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @31
[3] phi() [ ] ( )
main: scope:[main] from @31
[4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen param-assignment [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] )
to:main::@5
main::@5: scope:[main] from main
[6] phi() [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] )
[7] call sin16s_genb param-assignment [ ] ( main:2 [ ] )
to:main::@6
main::@6: scope:[main] from main::@5
[8] phi() [ ] ( main:2 [ ] )
[9] call print_cls param-assignment [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main::@6 main::@9
[10] (byte) main::i#2 ← phi( main::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@9/(byte) main::i#1 ) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] )
[10] (byte*) char_cursor#49 ← phi( main::@6/(const byte*) SCREEN#0 main::@9/(byte*) char_cursor#2 ) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] )
[10] (signed word*) main::st2#2 ← phi( main::@6/(const signed word[120]) main::sintab2#0 main::@9/(signed word*) main::st2#1 ) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] )
[10] (signed word*) main::st1#2 ← phi( main::@6/(const signed word[120]) main::sintab1#0 main::@9/(signed word*) main::st1#1 ) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] )
[11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] )
[12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] )
to:main::@3
main::@3: scope:[main] from main::@1
[13] phi() [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] )
[14] call print_str param-assignment [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 main::sw#0 ] )
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
[15] (byte*) char_cursor#48 ← phi( main::@1/(byte*) char_cursor#49 main::@3/(byte*) char_cursor#2 ) [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#48 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#48 ] )
[16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#48 print_sword::w#1 ] )
[17] call print_sword param-assignment [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:main::@8
main::@8: scope:[main] from main::@2
[18] phi() [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
[19] call print_str param-assignment [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 ] )
to:main::@9
main::@9: scope:[main] from main::@8
[20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::st2#2 main::i#2 main::st1#1 char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 char_cursor#2 ] )
[21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 main::st1#1 main::st2#1 char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 char_cursor#2 ] )
[22] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::st1#1 main::st2#1 char_cursor#2 main::i#1 ] ( main:2 [ main::st1#1 main::st2#1 char_cursor#2 main::i#1 ] )
[23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 [ main::st1#1 main::st2#1 char_cursor#2 main::i#1 ] ( main:2 [ main::st1#1 main::st2#1 char_cursor#2 main::i#1 ] )
to:main::@return
main::@return: scope:[main] from main::@9
[24] return [ ] ( main:2 [ ] )
to:@return
print_str: scope:[print_str] from main::@3 main::@8
[25] (byte*) char_cursor#51 ← phi( main::@3/(byte*) char_cursor#49 main::@8/(byte*) char_cursor#12 ) [ print_str::str#5 char_cursor#51 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_str::str#5 char_cursor#51 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_str::str#5 char_cursor#51 ] )
[25] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@8/(const string) main::str ) [ print_str::str#5 char_cursor#51 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_str::str#5 char_cursor#51 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_str::str#5 char_cursor#51 ] )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[26] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#51 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 print_str::str#3 ] )
[26] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 print_str::str#3 ] )
[27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 print_str::str#3 ] )
to:print_str::@return
print_str::@return: scope:[print_str] from print_str::@1
[28] return [ char_cursor#2 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 ] )
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[29] *((byte*) char_cursor#2) ← *((byte*) print_str::str#3) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 print_str::str#3 ] )
[30] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#3 char_cursor#1 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_str::str#3 char_cursor#1 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_str::str#3 char_cursor#1 ] )
[31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_str::str#0 char_cursor#1 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_str::str#0 char_cursor#1 ] )
to:print_str::@1
print_sword: scope:[print_sword] from main::@2
[32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#48 print_sword::w#1 ] )
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[33] phi() [ char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#48 print_sword::w#1 ] )
[34] call print_char param-assignment [ print_sword::w#1 char_cursor#12 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 char_cursor#12 ] )
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@2
[35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_sword::w#0 ] )
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@4
[36] (byte*) char_cursor#43 ← phi( print_sword/(byte*) char_cursor#48 print_sword::@4/(byte*) char_cursor#12 ) [ print_sword::w#3 char_cursor#43 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#43 ] )
[36] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@4/(signed word) print_sword::w#0 ) [ print_sword::w#3 char_cursor#43 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#43 ] )
[37] call print_word param-assignment [ char_cursor#12 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[38] return [ char_cursor#12 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:@return
print_word: scope:[print_word] from print_sword::@1
[39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 [ print_sword::w#3 char_cursor#43 print_byte::b#0 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#43 print_byte::b#0 ] )
[40] call print_byte param-assignment [ char_cursor#12 print_sword::w#3 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_sword::w#3 ] )
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 [ char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_byte::b#1 ] )
[42] call print_byte param-assignment [ char_cursor#12 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[43] return [ char_cursor#12 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[44] (byte*) char_cursor#46 ← phi( print_word/(byte*) char_cursor#43 print_word::@1/(byte*) char_cursor#12 ) [ print_byte::b#2 char_cursor#46 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#46 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#46 ] )
[44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#46 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#46 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#46 ] )
[45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 char_cursor#46 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#46 print_byte::$0 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#46 print_byte::$0 ] )
[46] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#46 print_char::ch#1 ] )
[47] call print_char param-assignment [ char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 print_byte::b#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_byte::b#2 ] )
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#12 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_byte::$2 ] )
[49] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_char::ch#2 ] )
[50] call print_char param-assignment [ char_cursor#12 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[51] return [ char_cursor#12 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2
[52] (byte*) char_cursor#33 ← phi( print_byte/(byte*) char_cursor#46 print_byte::@1/(byte*) char_cursor#12 print_sword::@2/(byte*) char_cursor#48 ) [ print_char::ch#3 char_cursor#33 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_char::ch#3 char_cursor#33 ] )
[52] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) [ print_char::ch#3 char_cursor#33 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_char::ch#3 char_cursor#33 ] )
[53] *((byte*) char_cursor#33) ← (byte) print_char::ch#3 [ char_cursor#33 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 char_cursor#33 ] )
[54] (byte*) char_cursor#12 ← ++ (byte*) char_cursor#33 [ char_cursor#12 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[55] return [ char_cursor#12 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
to:@return
print_cls: scope:[print_cls] from main::@6
[56] phi() [ ] ( main:2::print_cls:9 [ ] )
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[57] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] )
[58] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] )
[59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] )
[60] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] )
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[61] return [ ] ( main:2::print_cls:9 [ ] )
to:@return
sin16s_genb: scope:[sin16s_genb] from main::@5
[62] phi() [ divr16u::rem#11 ] ( main:2::sin16s_genb:7 [ divr16u::rem#11 ] )
[63] call div32u16u param-assignment [ div32u16u::return#0 ] ( main:2::sin16s_genb:7 [ div32u16u::return#0 ] )
[64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] )
to:sin16s_genb::@3
sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb
[65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] )
to:sin16s_genb::@1
sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@3 sin16s_genb::@4
[66] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_genb::@4/(word) sin16s_genb::i#1 ) [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] )
[66] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@3/(const signed word[120]) main::sintab2#0 sin16s_genb::@4/(signed word*) sin16s_genb::sintab#0 ) [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] )
[66] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_genb::@4/(dword) sin16s_genb::x#1 ) [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] )
[67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] )
[68] call sin16sb param-assignment [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#1 ] )
[69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] )
to:sin16s_genb::@4
sin16s_genb::@4: scope:[sin16s_genb] from sin16s_genb::@1
[70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] )
[71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] )
[72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] )
[73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] )
[74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] )
[75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] )
to:sin16s_genb::@return
sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@4
[76] return [ ] ( main:2::sin16s_genb:7 [ ] )
to:@return
sin16sb: scope:[sin16sb] from sin16s_genb::@1
[77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] )
to:sin16sb::@4
sin16sb::@4: scope:[sin16sb] from sin16sb
[78] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#1 ] )
to:sin16sb::@1
sin16sb::@1: scope:[sin16sb] from sin16sb sin16sb::@4
[79] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] )
[79] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 ) [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] )
[80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] )
to:sin16sb::@5
sin16sb::@5: scope:[sin16sb] from sin16sb::@1
[81] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x#2 ] )
to:sin16sb::@2
sin16sb::@2: scope:[sin16sb] from sin16sb::@1 sin16sb::@5
[82] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 ) [ sin16sb::isUpper#2 sin16sb::x#6 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x#6 ] )
[83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 ] )
[84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] )
[85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] )
[86] call mulu16_sel param-assignment [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] )
[87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] )
to:sin16sb::@8
sin16sb::@8: scope:[sin16sb] from sin16sb::@2
[88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] )
[89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] )
[90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] )
[91] call mulu16_sel param-assignment [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] )
[92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] )
to:sin16sb::@9
sin16sb::@9: scope:[sin16sb] from sin16sb::@8
[93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] )
[94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] )
[95] call mulu16_sel param-assignment [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 sin16sb::x3#0 ] )
[96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] )
to:sin16sb::@10
sin16sb::@10: scope:[sin16sb] from sin16sb::@9
[97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] )
[98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] )
[99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] )
[100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] )
[101] call mulu16_sel param-assignment [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 sin16sb::usinx#0 ] )
[102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] )
to:sin16sb::@11
sin16sb::@11: scope:[sin16sb] from sin16sb::@10
[103] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] )
[104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] )
[105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] )
[106] call mulu16_sel param-assignment [ sin16sb::isUpper#2 mulu16_sel::return#17 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 mulu16_sel::return#17 sin16sb::usinx#0 ] )
[107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] )
to:sin16sb::@12
sin16sb::@12: scope:[sin16sb] from sin16sb::@11
[108] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] )
[109] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] )
[110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] )
[111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15 [ sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::usinx#1 ] )
to:sin16sb::@6
sin16sb::@6: scope:[sin16sb] from sin16sb::@12
[112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::sinx#1 ] )
to:sin16sb::@3
sin16sb::@3: scope:[sin16sb] from sin16sb::@15 sin16sb::@6
[113] (signed word) sin16sb::return#1 ← phi( sin16sb::@15/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 ) [ sin16sb::return#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#1 ] )
to:sin16sb::@return
sin16sb::@return: scope:[sin16sb] from sin16sb::@3
[114] return [ sin16sb::return#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#1 ] )
to:@return
sin16sb::@15: scope:[sin16sb] from sin16sb::@12
[115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#5 ] )
to:sin16sb::@3
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 sin16sb::@10 sin16sb::@11 sin16sb::@2 sin16sb::@8 sin16sb::@9
[116] (byte) mulu16_sel::select#10 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16sb::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16sb::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
[116] (word) mulu16_sel::v2#10 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 sin16sb::@10/(word) mulu16_sel::v2#8 sin16sb::@11/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@8/(word) mulu16_sel::v2#6 sin16sb::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
[116] (word) mulu16_sel::v1#10 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 sin16sb::@10/(word) mulu16_sel::v1#8 sin16sb::@11/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@8/(word) mulu16_sel::v1#6 sin16sb::@9/(word) mulu16_sel::v1#7 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
[117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] )
[118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] )
[119] call mul16u param-assignment [ mulu16_sel::select#10 mul16u::res#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] )
[120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] )
to:mulu16_sel::@2
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
[121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] )
[122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] )
[123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] )
to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
[124] return [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] )
to:@return
mul16u: scope:[mul16u] from mulu16_sel
[125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] )
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
[126] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[126] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[126] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@4/(word) mul16u::a#0 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[127] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
[128] return [ mul16u::res#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] )
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
[129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] )
[130] if((byte~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
to:mul16u::@7
mul16u::@7: scope:[mul16u] from mul16u::@2
[131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] )
to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
[132] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) [ mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] )
[133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] )
[134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] )
to:mul16u::@1
div32u16u: scope:[div32u16u] from sin16s_gen sin16s_genb
[135] (word) rem16u#26 ← phi( sin16s_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_genb/(word) divr16u::rem#11 ) [ div32u16u::dividend#2 div32u16u::divisor#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 ] )
[135] (word) div32u16u::divisor#2 ← phi( sin16s_gen/(const word) main::wavelength#0 sin16s_genb/(const word) main::wavelength#0 ) [ div32u16u::dividend#2 div32u16u::divisor#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 ] )
[135] (dword) div32u16u::dividend#2 ← phi( sin16s_gen/(const dword) PI2_u4f28#0 sin16s_genb/(const dword) PI2_u4f28#0 ) [ div32u16u::dividend#2 div32u16u::divisor#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 ] )
[136] (word) divr16u::dividend#1 ← > (dword) div32u16u::dividend#2 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] )
[137] (word) divr16u::divisor#0 ← (word) div32u16u::divisor#2 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] )
[138] call divr16u param-assignment [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] )
[139] (word) divr16u::return#2 ← (word) divr16u::return#0 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#2 ] )
to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u
[140] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 ] )
[141] (word) divr16u::dividend#2 ← < (dword) div32u16u::dividend#2 [ div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 ] )
[142] (word) divr16u::divisor#1 ← (word) div32u16u::divisor#2 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 ] )
[143] (word) divr16u::rem#4 ← (word) divr16u::rem#11 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] )
[144] call divr16u param-assignment [ divr16u::rem#11 divr16u::return#0 div32u16u::quotient_hi#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::rem#11 divr16u::return#0 div32u16u::quotient_hi#0 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::rem#11 divr16u::return#0 div32u16u::quotient_hi#0 ] )
[145] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::return#3 ] )
to:div32u16u::@3
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
[146] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ divr16u::rem#11 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::rem#11 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::rem#11 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] )
[147] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 divr16u::rem#11 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::return#0 divr16u::rem#11 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::return#0 divr16u::rem#11 ] )
to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
[148] return [ div32u16u::return#0 divr16u::rem#11 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::return#0 divr16u::rem#11 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::return#0 divr16u::rem#11 ] )
to:@return
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
[149] (word) divr16u::divisor#6 ← phi( div32u16u/(word) divr16u::divisor#0 div32u16u::@2/(word) divr16u::divisor#1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
[149] (word) divr16u::dividend#5 ← phi( div32u16u/(word) divr16u::dividend#1 div32u16u::@2/(word) divr16u::dividend#2 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
[149] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[150] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[150] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[150] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[150] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[151] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[152] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[153] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[154] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[155] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[156] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
[157] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
[158] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
[159] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[160] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
[161] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[162] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] )
[162] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] )
[163] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] )
[164] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] )
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@3
[165] return [ divr16u::rem#11 divr16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 ] )
to:@return
sin16s_gen: scope:[sin16s_gen] from main
[166] phi() [ ] ( main:2::sin16s_gen:5 [ ] )
[167] call div32u16u param-assignment [ div32u16u::return#0 divr16u::rem#11 ] ( main:2::sin16s_gen:5 [ div32u16u::return#0 divr16u::rem#11 ] )
[168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ divr16u::rem#11 div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 div32u16u::return#2 ] )
to:sin16s_gen::@3
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen
[169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ divr16u::rem#11 sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 ] )
to:sin16s_gen::@1
sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4
[170] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
[170] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@3/(const signed word[120]) main::sintab1#0 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#0 ) [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
[170] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
[171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] )
[172] call sin16s param-assignment [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
[173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] )
to:sin16s_gen::@4
sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1
[174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] )
[175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
[176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] )
[177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] )
[178] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] )
[179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] )
to:sin16s_gen::@return
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4
[180] return [ divr16u::rem#11 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 ] )
to:@return
sin16s: scope:[sin16s] from sin16s_gen::@1
[181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] )
to:sin16s::@4
sin16s::@4: scope:[sin16s] from sin16s
[182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] )
to:sin16s::@1
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
[183] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
[183] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
[184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
to:sin16s::@5
sin16s::@5: scope:[sin16s] from sin16s::@1
[185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] )
to:sin16s::@2
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
[186] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) [ sin16s::isUpper#2 sin16s::x#6 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#6 ] )
[187] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$6 ] )
[188] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] )
[189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] )
[190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] )
[191] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] )
[192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] )
to:sin16s::@8
sin16s::@8: scope:[sin16s] from sin16s::@2
[193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] )
[194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] )
[195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] )
[196] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] )
[197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] )
to:sin16s::@9
sin16s::@9: scope:[sin16s] from sin16s::@8
[198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
[199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
[200] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
[201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] )
to:sin16s::@10
sin16s::@10: scope:[sin16s] from sin16s::@9
[202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] )
[203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] )
[204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
[205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
[206] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
[207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] )
to:sin16s::@11
sin16s::@11: scope:[sin16s] from sin16s::@10
[208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] )
[209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
[210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] )
[211] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::usinx#0 ] )
[212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] )
to:sin16s::@12
sin16s::@12: scope:[sin16s] from sin16s::@11
[213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] )
[214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] )
[215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] )
[216] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 [ sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::usinx#1 ] )
to:sin16s::@6
sin16s::@6: scope:[sin16s] from sin16s::@12
[217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] )
to:sin16s::@3
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
[218] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) [ sin16s::return#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
to:sin16s::@return
sin16s::@return: scope:[sin16s] from sin16s::@3
[219] return [ sin16s::return#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
to:@return
sin16s::@15: scope:[sin16s] from sin16s::@12
[220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] )
to:sin16s::@3

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,370 @@
(label) @31
(label) @begin
(label) @end
(dword) PI2_u4f28
(const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713
(word) PI_HALF_u4f12
(const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434
(dword) PI_HALF_u4f28
(const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428
(word) PI_u4f12
(const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868
(dword) PI_u4f28
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte*) char_cursor
(byte*) char_cursor#1 char_cursor zp ZP_WORD:11 101.0
(byte*) char_cursor#12 char_cursor zp ZP_WORD:11 1.1176470588235294
(byte*) char_cursor#2 char_cursor zp ZP_WORD:11 32.7
(byte*) char_cursor#33 char_cursor zp ZP_WORD:11 5.0
(byte*) char_cursor#43 char_cursor zp ZP_WORD:11 3.0
(byte*) char_cursor#46 char_cursor zp ZP_WORD:11 2.0
(byte*) char_cursor#48 char_cursor zp ZP_WORD:11 6.5
(byte*) char_cursor#49 char_cursor zp ZP_WORD:11 8.25
(byte*) char_cursor#51 char_cursor zp ZP_WORD:11 24.0
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@2
(label) div32u16u::@3
(label) div32u16u::@return
(dword) div32u16u::dividend
(dword) div32u16u::dividend#2 dividend zp ZP_DWORD:13 0.6666666666666666
(word) div32u16u::divisor
(word) div32u16u::divisor#2 divisor zp ZP_WORD:2 0.5714285714285714
(dword) div32u16u::quotient
(word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:11 0.5714285714285714
(word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:8 4.0
(dword) div32u16u::return
(dword) div32u16u::return#0 return zp ZP_DWORD:29 1.5
(dword) div32u16u::return#2 return zp ZP_DWORD:29 4.0
(dword) div32u16u::return#3 return zp ZP_DWORD:29 4.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 22.0
(byte~) divr16u::$2 reg byte a 22.0
(label) divr16u::@1
(label) divr16u::@2
(label) divr16u::@3
(label) divr16u::@4
(label) divr16u::@5
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:6 2.75
(word) divr16u::dividend#1 dividend zp ZP_WORD:6 2.0
(word) divr16u::dividend#2 dividend zp ZP_WORD:6 1.3333333333333333
(word) divr16u::dividend#3 dividend zp ZP_WORD:6 5.0
(word) divr16u::dividend#5 dividend zp ZP_WORD:6 6.0
(word) divr16u::divisor
(word) divr16u::divisor#0 divisor zp ZP_WORD:2 4.0
(word) divr16u::divisor#1 divisor zp ZP_WORD:2 2.0
(word) divr16u::divisor#6 divisor zp ZP_WORD:2 1.625
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:8 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:8 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:8 2.75
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:4 8.25
(word) divr16u::rem#1 rem zp ZP_WORD:4 22.0
(word) divr16u::rem#10 rem zp ZP_WORD:4 4.0
(word) divr16u::rem#11 rem zp ZP_WORD:4 1.1935483870967742
(word) divr16u::rem#2 rem zp ZP_WORD:4 22.0
(word) divr16u::rem#4 rem zp ZP_WORD:4 4.0
(word) divr16u::rem#5 rem zp ZP_WORD:4 24.0
(word) divr16u::rem#6 rem zp ZP_WORD:4 11.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:8 6.166666666666666
(word) divr16u::return#2 return zp ZP_WORD:8 4.0
(word) divr16u::return#3 return zp ZP_WORD:8 4.0
(byte*) line_cursor
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@5
(label) main::@6
(label) main::@8
(label) main::@9
(label) main::@return
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 1.8333333333333333
(signed word[120]) main::sintab1
(const signed word[120]) main::sintab1#0 sintab1 = { fill( 120, 0) }
(signed word[120]) main::sintab2
(const signed word[120]) main::sintab2#0 sintab2 = { fill( 120, 0) }
(signed word*) main::st1
(signed word*) main::st1#1 st1 zp ZP_WORD:2 5.5
(signed word*) main::st1#2 st1 zp ZP_WORD:2 3.3000000000000003
(signed word*) main::st2
(signed word*) main::st2#1 st2 zp ZP_WORD:4 7.333333333333333
(signed word*) main::st2#2 st2 zp ZP_WORD:4 3.0
(const string) main::str str = (string) " @"
(const string) main::str1 str1 = (string) " @"
(signed word) main::sw
(signed word) main::sw#0 sw zp ZP_WORD:8 6.6000000000000005
(word) main::wavelength
(const word) main::wavelength#0 wavelength = (byte/signed byte/word/signed word/dword/signed dword) 120
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 202.0
(label) mul16u::@1
(label) mul16u::@2
(label) mul16u::@4
(label) mul16u::@7
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp ZP_WORD:19 101.0
(word) mul16u::a#1 a zp ZP_WORD:19 1.3333333333333333
(word) mul16u::a#2 a zp ZP_WORD:19 67.66666666666666
(word) mul16u::b
(word) mul16u::b#0 b zp ZP_WORD:17 4.0
(dword) mul16u::mb
(dword) mul16u::mb#0 mb zp ZP_DWORD:25 4.0
(dword) mul16u::mb#1 mb zp ZP_DWORD:25 202.0
(dword) mul16u::mb#2 mb zp ZP_DWORD:25 43.57142857142858
(dword) mul16u::res
(dword) mul16u::res#1 res zp ZP_DWORD:21 202.0
(dword) mul16u::res#2 res zp ZP_DWORD:21 50.83333333333333
(dword) mul16u::res#6 res zp ZP_DWORD:21 101.0
(dword) mul16u::return
(dword) mul16u::return#2 return zp ZP_DWORD:21 4.0
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:21 4.0
(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:21 4.0
(label) mulu16_sel::@2
(label) mulu16_sel::@return
(word) mulu16_sel::return
(word) mulu16_sel::return#0 return zp ZP_WORD:11 4.0
(word) mulu16_sel::return#1 return zp ZP_WORD:11 4.0
(word) mulu16_sel::return#10 return zp ZP_WORD:11 4.0
(word) mulu16_sel::return#11 return#11 zp ZP_WORD:17 4.0
(word) mulu16_sel::return#14 return#14 zp ZP_WORD:17 4.0
(word) mulu16_sel::return#15 return zp ZP_WORD:11 4.0
(word) mulu16_sel::return#16 return#16 zp ZP_WORD:17 4.0
(word) mulu16_sel::return#17 return#17 zp ZP_WORD:17 1.8333333333333335
(word) mulu16_sel::return#18 return#18 zp ZP_WORD:17 4.0
(word) mulu16_sel::return#19 return zp ZP_WORD:11 4.0
(word) mulu16_sel::return#20 return#20 zp ZP_WORD:17 4.0
(byte) mulu16_sel::select
(byte) mulu16_sel::select#10 reg byte x 0.3333333333333333
(word) mulu16_sel::v1
(word) mulu16_sel::v1#0 v1 zp ZP_WORD:11 2.0
(word) mulu16_sel::v1#1 v1 zp ZP_WORD:11 2.0
(word) mulu16_sel::v1#10 v1 zp ZP_WORD:11 22.0
(word) mulu16_sel::v1#2 v1 zp ZP_WORD:11 4.0
(word) mulu16_sel::v1#3 v1 zp ZP_WORD:11 2.0
(word) mulu16_sel::v1#4 v1 zp ZP_WORD:11 2.0
(word) mulu16_sel::v1#5 v1 zp ZP_WORD:11 2.0
(word) mulu16_sel::v1#6 v1 zp ZP_WORD:11 2.0
(word) mulu16_sel::v1#7 v1 zp ZP_WORD:11 4.0
(word) mulu16_sel::v1#8 v1 zp ZP_WORD:11 2.0
(word) mulu16_sel::v1#9 v1 zp ZP_WORD:11 2.0
(word) mulu16_sel::v2
(word) mulu16_sel::v2#0 v2 zp ZP_WORD:17 4.0
(word) mulu16_sel::v2#1 v2 zp ZP_WORD:17 4.0
(word) mulu16_sel::v2#10 v2 zp ZP_WORD:17 9.0
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:17 4.0
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:17 4.0
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:17 4.0
(word) mulu16_sel::v2#6 v2 zp ZP_WORD:17 4.0
(word) mulu16_sel::v2#8 v2 zp ZP_WORD:17 4.0
(word) mulu16_sel::v2#9 v2 zp ZP_WORD:17 4.0
(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 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0
(byte[]) print_byte::hextab
(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef"
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#3 reg byte a 6.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:6 202.0
(byte*) print_str::str#3 str zp ZP_WORD:6 101.5
(byte*) print_str::str#5 str zp ZP_WORD:6 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:8 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:8 1.3333333333333333
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word) rem16u
(word) rem16u#26 rem16u zp ZP_WORD:4 20.0
(signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$6 $6 zp ZP_DWORD:21 4.0
(label) sin16s::@1
(label) sin16s::@10
(label) sin16s::@11
(label) sin16s::@12
(label) sin16s::@15
(label) sin16s::@2
(label) sin16s::@3
(label) sin16s::@4
(label) sin16s::@5
(label) sin16s::@6
(label) sin16s::@8
(label) sin16s::@9
(label) sin16s::@return
(byte) sin16s::isUpper
(byte) sin16s::isUpper#2 isUpper zp ZP_BYTE:10 0.06060606060606061
(signed word) sin16s::return
(signed word) sin16s::return#0 return zp ZP_WORD:8 22.0
(signed word) sin16s::return#1 return zp ZP_WORD:8 5.0
(signed word~) sin16s::return#5 return zp ZP_WORD:8 4.0
(signed word) sin16s::sinx
(signed word) sin16s::sinx#1 sinx zp ZP_WORD:8 4.0
(word) sin16s::usinx
(word) sin16s::usinx#0 usinx zp ZP_WORD:8 0.3333333333333333
(word) sin16s::usinx#1 usinx zp ZP_WORD:8 1.0
(dword) sin16s::x
(dword) sin16s::x#0 x zp ZP_DWORD:21 8.5
(dword) sin16s::x#1 x zp ZP_DWORD:21 4.0
(dword) sin16s::x#2 x zp ZP_DWORD:21 4.0
(dword) sin16s::x#4 x zp ZP_DWORD:21 5.0
(dword) sin16s::x#6 x zp ZP_DWORD:21 6.0
(word) sin16s::x1
(word) sin16s::x1#0 x1 zp ZP_WORD:33 0.6363636363636365
(word) sin16s::x2
(word) sin16s::x2#0 x2 zp ZP_WORD:11 4.0
(word) sin16s::x3
(word) sin16s::x3#0 x3 zp ZP_WORD:11 1.0
(word) sin16s::x3_6
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:17 4.0
(word) sin16s::x4
(word) sin16s::x4#0 x4 zp ZP_WORD:11 4.0
(word) sin16s::x5
(word) sin16s::x5#0 x5 zp ZP_WORD:17 4.0
(word) sin16s::x5_128
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:17 4.0
(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength)
(signed word~) sin16s_gen::$1 $1 zp ZP_WORD:8 22.0
(label) sin16s_gen::@1
(label) sin16s_gen::@3
(label) sin16s_gen::@4
(label) sin16s_gen::@return
(word) sin16s_gen::i
(word) sin16s_gen::i#1 i zp ZP_WORD:6 16.5
(word) sin16s_gen::i#2 i zp ZP_WORD:6 2.75
(signed word*) sin16s_gen::sintab
(signed word*) sin16s_gen::sintab#0 sintab zp ZP_WORD:2 5.5
(signed word*) sin16s_gen::sintab#2 sintab zp ZP_WORD:2 5.5
(dword) sin16s_gen::step
(dword) sin16s_gen::step#0 step zp ZP_DWORD:29 1.1818181818181819
(word) sin16s_gen::wavelength
(dword) sin16s_gen::x
(dword) sin16s_gen::x#1 x zp ZP_DWORD:13 7.333333333333333
(dword) sin16s_gen::x#2 x zp ZP_DWORD:13 4.714285714285714
(void()) sin16s_genb((signed word*) sin16s_genb::sintab , (word) sin16s_genb::wavelength)
(signed word~) sin16s_genb::$2 $2 zp ZP_WORD:8 22.0
(label) sin16s_genb::@1
(label) sin16s_genb::@3
(label) sin16s_genb::@4
(label) sin16s_genb::@return
(word) sin16s_genb::i
(word) sin16s_genb::i#1 i zp ZP_WORD:4 16.5
(word) sin16s_genb::i#2 i zp ZP_WORD:4 2.75
(signed word*) sin16s_genb::sintab
(signed word*) sin16s_genb::sintab#0 sintab zp ZP_WORD:2 5.5
(signed word*) sin16s_genb::sintab#2 sintab zp ZP_WORD:2 5.5
(dword) sin16s_genb::step
(dword) sin16s_genb::step#0 step zp ZP_DWORD:29 1.1818181818181819
(word) sin16s_genb::wavelength
(dword) sin16s_genb::x
(dword) sin16s_genb::x#1 x zp ZP_DWORD:13 7.333333333333333
(dword) sin16s_genb::x#2 x zp ZP_DWORD:13 4.714285714285714
(signed word()) sin16sb((word) sin16sb::x)
(label) sin16sb::@1
(label) sin16sb::@10
(label) sin16sb::@11
(label) sin16sb::@12
(label) sin16sb::@15
(label) sin16sb::@2
(label) sin16sb::@3
(label) sin16sb::@4
(label) sin16sb::@5
(label) sin16sb::@6
(label) sin16sb::@8
(label) sin16sb::@9
(label) sin16sb::@return
(byte) sin16sb::isUpper
(byte) sin16sb::isUpper#2 isUpper zp ZP_BYTE:10 0.0625
(signed word) sin16sb::return
(signed word) sin16sb::return#0 return zp ZP_WORD:8 22.0
(signed word) sin16sb::return#1 return zp ZP_WORD:8 5.0
(signed word~) sin16sb::return#5 return zp ZP_WORD:8 4.0
(signed word) sin16sb::sinx
(signed word) sin16sb::sinx#1 sinx zp ZP_WORD:8 4.0
(word) sin16sb::usinx
(word) sin16sb::usinx#0 usinx zp ZP_WORD:8 0.3333333333333333
(word) sin16sb::usinx#1 usinx zp ZP_WORD:8 1.0
(word) sin16sb::x
(word) sin16sb::x#0 x zp ZP_WORD:6 8.5
(word) sin16sb::x#1 x zp ZP_WORD:6 4.0
(word) sin16sb::x#2 x zp ZP_WORD:6 4.0
(word) sin16sb::x#4 x zp ZP_WORD:6 5.0
(word) sin16sb::x#6 x zp ZP_WORD:6 6.0
(word) sin16sb::x1
(word) sin16sb::x1#0 x1 zp ZP_WORD:6 0.6363636363636365
(word) sin16sb::x2
(word) sin16sb::x2#0 x2 zp ZP_WORD:11 4.0
(word) sin16sb::x3
(word) sin16sb::x3#0 x3 zp ZP_WORD:11 1.0
(word) sin16sb::x3_6
(word) sin16sb::x3_6#0 x3_6 zp ZP_WORD:17 4.0
(word) sin16sb::x4
(word) sin16sb::x4#0 x4 zp ZP_WORD:11 4.0
(word) sin16sb::x5
(word) sin16sb::x5#0 x5 zp ZP_WORD:17 4.0
(word) sin16sb::x5_128
(word) sin16sb::x5_128#0 x5_128 zp ZP_WORD:17 4.0
zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_genb::sintab#2 sin16s_genb::sintab#0 div32u16u::divisor#2 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ]
zp ZP_WORD:4 [ main::st2#2 main::st2#1 sin16s_genb::i#2 sin16s_genb::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#26 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
reg byte x [ main::i#2 main::i#1 ]
zp ZP_WORD:6 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 sin16sb::x1#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 sin16s_gen::i#2 sin16s_gen::i#1 ]
zp ZP_WORD:8 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 sin16sb::usinx#1 sin16sb::return#0 sin16s_genb::$2 sin16sb::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 ]
zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 sin16sb::isUpper#2 sin16s::isUpper#2 ]
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:11 [ char_cursor#33 char_cursor#46 char_cursor#43 char_cursor#51 char_cursor#48 char_cursor#49 char_cursor#2 char_cursor#12 char_cursor#1 mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 sin16s::x3#0 sin16sb::x2#0 sin16sb::x4#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#19 mulu16_sel::return#10 mulu16_sel::return#0 mulu16_sel::return#1 mulu16_sel::return#15 div32u16u::quotient_hi#0 ]
zp ZP_DWORD:13 [ sin16s_genb::x#2 sin16s_genb::x#1 div32u16u::dividend#2 sin16s_gen::x#2 sin16s_gen::x#1 ]
zp ZP_WORD:17 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 mul16u::b#0 mulu16_sel::return#18 mulu16_sel::return#17 mulu16_sel::return#20 sin16sb::x3_6#0 mulu16_sel::return#11 sin16sb::x5#0 mulu16_sel::return#14 sin16s::x3_6#0 mulu16_sel::return#16 sin16s::x5#0 sin16sb::x5_128#0 sin16s::x5_128#0 ]
reg byte x [ mulu16_sel::select#10 ]
zp ZP_WORD:19 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
zp ZP_DWORD:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ]
zp ZP_DWORD:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
zp ZP_DWORD:29 [ div32u16u::return#3 sin16s_genb::step#0 div32u16u::return#0 div32u16u::return#2 sin16s_gen::step#0 ]
reg byte a [ mul16u::$1 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
zp ZP_WORD:33 [ sin16s::x1#0 ]

View File

@ -5,7 +5,7 @@
.const PI_u4f12 = $3244
.const PI_HALF_u4f12 = $1922
.label SCREEN = $400
.label char_cursor = $b
.label char_cursor = $d
.label line_cursor = 8
jsr main
main: {
@ -20,9 +20,10 @@ sin8u_table: {
.const max = $ff
.label amplitude = max-min
.const sum = min+max
.const mid = $ff & sum>>1
.label _17 = $b
.label step = $10
.const mid = $ff & (sum>>1)+1
.label step = $12
.label sinx = $11
.label sinx_sc = $f
.label sintab = 4
.label x = 2
.label i = 6
@ -94,9 +95,10 @@ sin8u_table: {
lda x+1
sta sin8s.x+1
jsr sin8s
sta sinx
tay
jsr mul8su
lda _17+1
lda sinx_sc+1
clc
adc #mid
tax
@ -116,12 +118,34 @@ sin8u_table: {
lda #>str5
sta print_str.str+1
jsr print_str
lda x
sta print_word.w
lda x+1
sta print_word.w+1
jsr print_word
lda #<str6
sta print_str.str
lda #>str6
sta print_str.str+1
jsr print_str
lda sinx
sta print_sbyte.b
jsr print_sbyte
lda #<str7
sta print_str.str
lda #>str7
sta print_str.str+1
jsr print_str
lda sinx_sc
sta print_sword.w
lda sinx_sc+1
sta print_sword.w+1
jsr print_sword
lda #<str8
sta print_str.str
lda #>str8
sta print_str.str+1
jsr print_str
stx print_byte.b
jsr print_byte
jsr print_ln
@ -138,11 +162,15 @@ sin8u_table: {
!:
lda i+1
cmp #>main.tabsize
bcc b1
bcs !b1+
jmp b1
!b1:
bne !+
lda i
cmp #<main.tabsize
bcc b1
bcs !b1+
jmp b1
!b1:
!:
rts
str: .text "step:@"
@ -152,6 +180,8 @@ sin8u_table: {
str4: .text " mid:@"
str5: .text "x: @"
str6: .text " sin: @"
str7: .text " scaled: @"
str8: .text " trans: @"
}
print_ln: {
b1:
@ -200,7 +230,7 @@ print_char: {
rts
}
print_str: {
.label str = $d
.label str = $b
b1:
ldy #0
lda (str),y
@ -221,8 +251,27 @@ print_str: {
!:
jmp b1
}
print_sword: {
.label w = $b
lda w+1
bpl b1
lda #'-'
jsr print_char
sec
lda w
eor #$ff
adc #0
sta w
lda w+1
eor #$ff
adc #0
sta w+1
b1:
jsr print_word
rts
}
print_word: {
.label w = 2
.label w = $b
lda w+1
sta print_byte.b
jsr print_byte
@ -231,26 +280,43 @@ print_word: {
jsr print_byte
rts
}
print_sbyte: {
.label b = $a
lda b
cmp #0
bpl b1
lda #'-'
jsr print_char
lda b
eor #$ff
clc
adc #1
sta b
b1:
jsr print_byte
rts
}
mul8su: {
.label m = $b
.label return = $b
.const b = sin8u_table.amplitude+1
.label m = $f
.label return = $f
tya
tax
lda #sin8u_table.amplitude
lda #b
jsr mul8u
cpy #0
bpl b1
lda m+1
sec
sbc #sin8u_table.amplitude
sbc #b
sta m+1
b1:
rts
}
mul8u: {
.label mb = $d
.label res = $b
.label return = $b
.label mb = $b
.label res = $f
.label return = $f
sta mb
lda #0
sta mb+1
@ -284,9 +350,9 @@ sin8s: {
.const DIV_6 = $2b
.label _6 = $b
.label x = $b
.label x1 = $12
.label x3 = $13
.label usinx = $14
.label x1 = $14
.label x3 = $15
.label usinx = $16
.label isUpper = $a
lda x+1
cmp #>PI_u4f12
@ -388,9 +454,9 @@ sin8s: {
jmp b4
}
mulu8_sel: {
.label _0 = $b
.label _1 = $b
.label select = $f
.label _0 = $f
.label _1 = $f
.label select = $11
tya
jsr mul8u
ldy select
@ -405,15 +471,15 @@ mulu8_sel: {
rts
}
div16u: {
.label return = $10
.label return = $12
jsr divr16u
rts
}
divr16u: {
.label rem = 2
.label dividend = 4
.label quotient = $10
.label return = $10
.label quotient = $12
.label return = $12
ldx #0
txa
sta quotient

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -10,21 +10,24 @@
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte*) char_cursor
(byte*) char_cursor#1 char_cursor zp ZP_WORD:11 101.0
(byte*) char_cursor#11 char_cursor zp ZP_WORD:11 4.344827586206896
(byte*) char_cursor#2 char_cursor zp ZP_WORD:11 16.3
(byte*) char_cursor#46 char_cursor zp ZP_WORD:11 4.0
(byte*) char_cursor#73 char_cursor zp ZP_WORD:11 8.333333333333334
(byte*) char_cursor#78 char_cursor zp ZP_WORD:11 32.0
(byte*~) char_cursor#92 char_cursor zp ZP_WORD:11 22.0
(byte*) char_cursor#1 char_cursor zp ZP_WORD:13 101.0
(byte*) char_cursor#102 char_cursor zp ZP_WORD:13 54.0
(byte*~) char_cursor#121 char_cursor zp ZP_WORD:13 22.0
(byte*) char_cursor#17 char_cursor zp ZP_WORD:13 3.7073170731707323
(byte*) char_cursor#2 char_cursor zp ZP_WORD:13 13.269230769230768
(byte*) char_cursor#62 char_cursor zp ZP_WORD:13 6.0
(byte*) char_cursor#92 char_cursor zp ZP_WORD:13 3.0
(byte*) char_cursor#94 char_cursor zp ZP_WORD:13 3.0
(byte*) char_cursor#96 char_cursor zp ZP_WORD:13 8.5
(byte*) char_cursor#97 char_cursor zp ZP_WORD:13 9.0
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
(label) div16u::@2
(label) div16u::@return
(word) div16u::dividend
(word) div16u::divisor
(word) div16u::return
(word) div16u::return#0 return zp ZP_WORD:16 1.3333333333333333
(word) div16u::return#2 return zp ZP_WORD:16 4.0
(word) div16u::return#0 return zp ZP_WORD:18 1.3333333333333333
(word) div16u::return#2 return zp ZP_WORD:18 4.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 22.0
(byte~) divr16u::$2 reg byte a 22.0
@ -42,9 +45,9 @@
(byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:16 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:16 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:16 2.75
(word) divr16u::quotient#1 quotient zp ZP_WORD:18 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:18 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:18 2.75
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
(word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
@ -53,10 +56,10 @@
(word) divr16u::rem#4 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#5 rem zp ZP_WORD:2 11.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:16 7.000000000000001
(word) divr16u::return#2 return zp ZP_WORD:16 4.0
(word) divr16u::return#0 return zp ZP_WORD:18 7.000000000000001
(word) divr16u::return#2 return zp ZP_WORD:18 4.0
(byte*) line_cursor
(byte*) line_cursor#1 line_cursor zp ZP_WORD:8 11.206896551724137
(byte*) line_cursor#1 line_cursor zp ZP_WORD:8 8.55263157894737
(byte*) line_cursor#12 line_cursor zp ZP_WORD:8 204.0
(byte*) line_cursor#23 line_cursor zp ZP_WORD:8 13.0
(void()) main()
@ -76,12 +79,13 @@
(signed byte) mul8su::a
(signed byte) mul8su::a#0 reg byte y 2.6
(byte) mul8su::b
(const byte) mul8su::b#0 b = (const byte) sin8u_table::amplitude#0+(byte/signed byte/word/signed word/dword/signed dword) 1
(word) mul8su::m
(word) mul8su::m#0 m zp ZP_WORD:11 2.0
(word) mul8su::m#1 m zp ZP_WORD:11 4.0
(word) mul8su::m#2 m zp ZP_WORD:11 1.3333333333333333
(word) mul8su::m#0 m zp ZP_WORD:15 2.0
(word) mul8su::m#1 m zp ZP_WORD:15 4.0
(word) mul8su::m#2 m zp ZP_WORD:15 1.3333333333333333
(signed word) mul8su::return
(signed word) mul8su::return#2 return zp ZP_WORD:11 22.0
(signed word) mul8su::return#2 return zp ZP_WORD:15 22.0
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 202.0
(label) mul8u::@1
@ -99,19 +103,19 @@
(byte) mul8u::b#1 reg byte a 4.0
(byte) mul8u::b#2 reg byte a 4.0
(word) mul8u::mb
(word) mul8u::mb#0 mb zp ZP_WORD:13 4.0
(word) mul8u::mb#1 mb zp ZP_WORD:13 202.0
(word) mul8u::mb#2 mb zp ZP_WORD:13 43.57142857142858
(word) mul8u::mb#0 mb zp ZP_WORD:11 4.0
(word) mul8u::mb#1 mb zp ZP_WORD:11 202.0
(word) mul8u::mb#2 mb zp ZP_WORD:11 43.57142857142858
(word) mul8u::res
(word) mul8u::res#1 res zp ZP_WORD:11 202.0
(word) mul8u::res#2 res zp ZP_WORD:11 43.85714285714286
(word) mul8u::res#6 res zp ZP_WORD:11 101.0
(word) mul8u::res#1 res zp ZP_WORD:15 202.0
(word) mul8u::res#2 res zp ZP_WORD:15 43.85714285714286
(word) mul8u::res#6 res zp ZP_WORD:15 101.0
(word) mul8u::return
(word) mul8u::return#2 return zp ZP_WORD:11 4.0
(word) mul8u::return#3 return zp ZP_WORD:11 4.0
(word) mul8u::return#2 return zp ZP_WORD:15 4.0
(word) mul8u::return#3 return zp ZP_WORD:15 4.0
(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select)
(word~) mulu8_sel::$0 $0 zp ZP_WORD:11 4.0
(word~) mulu8_sel::$1 $1 zp ZP_WORD:11 4.0
(word~) mulu8_sel::$0 $0 zp ZP_WORD:15 4.0
(word~) mulu8_sel::$1 $1 zp ZP_WORD:15 4.0
(label) mulu8_sel::@2
(label) mulu8_sel::@return
(byte) mulu8_sel::return
@ -122,7 +126,7 @@
(byte) mulu8_sel::return#12 reg byte a 1.714285714285714
(byte) mulu8_sel::return#2 reg byte a 4.0
(byte) mulu8_sel::select
(byte) mulu8_sel::select#5 select zp ZP_BYTE:15 0.3333333333333333
(byte) mulu8_sel::select#5 select zp ZP_BYTE:17 0.3333333333333333
(byte) mulu8_sel::v1
(byte) mulu8_sel::v1#0 reg byte x 2.0
(byte) mulu8_sel::v1#1 reg byte x 2.0
@ -142,18 +146,19 @@
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#6 b zp ZP_BYTE:10 22.0
(byte) print_byte::b#7 b zp ZP_BYTE:10 4.75
(byte~) print_byte::b#10 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#7 b zp ZP_BYTE:10 22.0
(byte) print_byte::b#8 b zp ZP_BYTE:10 5.25
(byte[]) print_byte::hextab
(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef"
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#0 reg byte a 4.0
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 6.0
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 6.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -163,21 +168,40 @@
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(void()) print_sbyte((signed byte) print_sbyte::b)
(label) print_sbyte::@1
(label) print_sbyte::@2
(label) print_sbyte::@4
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0 b zp ZP_BYTE:10 4.0
(signed byte) print_sbyte::b#1 b zp ZP_BYTE:10 4.25
(signed byte) print_sbyte::b#3 b zp ZP_BYTE:10 4.0
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:13 202.0
(byte*) print_str::str#10 str zp ZP_WORD:13 2.0
(byte*) print_str::str#8 str zp ZP_WORD:13 101.5
(byte*) print_str::str#0 str zp ZP_WORD:11 202.0
(byte*) print_str::str#10 str zp ZP_WORD:11 101.5
(byte*) print_str::str#12 str zp ZP_WORD:11 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:11 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:11 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:11 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word) print_word::w#0 w zp ZP_WORD:2 4.0
(word) print_word::w#1 w zp ZP_WORD:2 22.0
(word) print_word::w#2 w zp ZP_WORD:2 5.666666666666667
(word) print_word::w#1 w zp ZP_WORD:11 4.0
(word) print_word::w#2 w zp ZP_WORD:11 22.0
(word) print_word::w#3 w zp ZP_WORD:11 6.333333333333334
(word~) print_word::w#5 w zp ZP_WORD:11 4.0
(word) rem16u
(signed byte()) sin8s((word) sin8s::x)
(word~) sin8s::$6 $6 zp ZP_WORD:11 4.0
@ -207,7 +231,7 @@
(signed byte) sin8s::sinx
(signed byte) sin8s::sinx#1 reg byte a 4.0
(byte) sin8s::usinx
(byte) sin8s::usinx#0 usinx zp ZP_BYTE:20 0.3333333333333333
(byte) sin8s::usinx#0 usinx zp ZP_BYTE:22 0.3333333333333333
(byte) sin8s::usinx#1 reg byte x 4.0
(byte) sin8s::usinx#2 reg byte x 4.0
(byte) sin8s::usinx#4 reg byte x 2.0
@ -218,11 +242,11 @@
(word) sin8s::x#4 x zp ZP_WORD:11 5.0
(word) sin8s::x#6 x zp ZP_WORD:11 6.0
(byte) sin8s::x1
(byte) sin8s::x1#0 x1 zp ZP_BYTE:18 0.6363636363636365
(byte) sin8s::x1#0 x1 zp ZP_BYTE:20 0.6363636363636365
(byte) sin8s::x2
(byte) sin8s::x2#0 reg byte a 4.0
(byte) sin8s::x3
(byte) sin8s::x3#0 x3 zp ZP_BYTE:19 1.0
(byte) sin8s::x3#0 x3 zp ZP_BYTE:21 1.0
(byte) sin8s::x3_6
(byte) sin8s::x3_6#0 reg byte a 4.0
(byte) sin8s::x4
@ -232,8 +256,7 @@
(byte) sin8s::x5_128
(byte) sin8s::x5_128#0 reg byte a 4.0
(void()) sin8u_table((byte*) sin8u_table::sintab , (word) sin8u_table::tabsize , (byte) sin8u_table::min , (byte) sin8u_table::max)
(signed word~) sin8u_table::$17 $17 zp ZP_WORD:11 22.0
(byte~) sin8u_table::$18 reg byte a 22.0
(byte~) sin8u_table::$20 reg byte a 22.0
(label) sin8u_table::@1
(label) sin8u_table::@10
(label) sin8u_table::@11
@ -246,6 +269,10 @@
(label) sin8u_table::@19
(label) sin8u_table::@20
(label) sin8u_table::@21
(label) sin8u_table::@22
(label) sin8u_table::@23
(label) sin8u_table::@24
(label) sin8u_table::@25
(label) sin8u_table::@3
(label) sin8u_table::@4
(label) sin8u_table::@5
@ -258,20 +285,24 @@
(const byte) sin8u_table::amplitude#0 amplitude = (const byte) sin8u_table::max#0-(const byte) sin8u_table::min#0
(word) sin8u_table::i
(word) sin8u_table::i#1 i zp ZP_WORD:6 16.5
(word) sin8u_table::i#2 i zp ZP_WORD:6 0.9565217391304348
(word) sin8u_table::i#10 i zp ZP_WORD:6 0.6875
(byte) sin8u_table::max
(const byte) sin8u_table::max#0 max = (byte/word/signed word/dword/signed dword) 255
(byte) sin8u_table::mid
(const byte) sin8u_table::mid#0 mid = ((byte))(const word) sin8u_table::sum#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
(const byte) sin8u_table::mid#0 mid = ((byte))(const word) sin8u_table::sum#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
(byte) sin8u_table::min
(const byte) sin8u_table::min#0 min = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte*) sin8u_table::sintab
(byte*) sin8u_table::sintab#1 sintab zp ZP_WORD:4 1.5714285714285714
(byte*) sin8u_table::sintab#2 sintab zp ZP_WORD:4 3.0
(byte) sin8u_table::sinval
(byte) sin8u_table::sinval#0 reg byte x 3.666666666666667
(byte*) sin8u_table::sintab#1 sintab zp ZP_WORD:4 1.0
(byte*) sin8u_table::sintab#2 sintab zp ZP_WORD:4 2.75
(signed byte) sin8u_table::sinx
(signed byte) sin8u_table::sinx#0 sinx zp ZP_BYTE:17 2.1999999999999997
(signed word) sin8u_table::sinx_sc
(signed word) sin8u_table::sinx_sc#0 sinx_sc zp ZP_WORD:15 2.1999999999999997
(byte) sin8u_table::sinx_tr
(byte) sin8u_table::sinx_tr#0 reg byte x 1.9411764705882355
(word) sin8u_table::step
(word) sin8u_table::step#0 step zp ZP_WORD:16 0.3191489361702128
(word) sin8u_table::step#0 step zp ZP_WORD:18 0.26785714285714285
(const string) sin8u_table::str str = (string) "step:@"
(const string) sin8u_table::str1 str1 = (string) " min:@"
(const string) sin8u_table::str2 str2 = (string) " max:@"
@ -279,47 +310,50 @@
(const string) sin8u_table::str4 str4 = (string) " mid:@"
(const string) sin8u_table::str5 str5 = (string) "x: @"
(const string) sin8u_table::str6 str6 = (string) " sin: @"
(const string) sin8u_table::str7 str7 = (string) " scaled: @"
(const string) sin8u_table::str8 str8 = (string) " trans: @"
(word) sin8u_table::sum
(const word) sin8u_table::sum#0 sum = (const byte) sin8u_table::min#0+(const byte) sin8u_table::max#0
(word) sin8u_table::tabsize
(word) sin8u_table::x
(word) sin8u_table::x#1 x zp ZP_WORD:2 7.333333333333333
(word) sin8u_table::x#2 x zp ZP_WORD:2 2.0
(word) sin8u_table::x#10 x zp ZP_WORD:2 1.4193548387096775
zp ZP_WORD:2 [ sin8u_table::x#2 sin8u_table::x#1 print_word::w#2 print_word::w#1 print_word::w#0 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 divr16u::dividend#2 divr16u::dividend#0 ]
zp ZP_WORD:6 [ sin8u_table::i#2 sin8u_table::i#1 ]
zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ]
zp ZP_WORD:8 [ line_cursor#12 line_cursor#23 line_cursor#1 ]
zp ZP_BYTE:10 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#6 sin8s::isUpper#10 ]
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
zp ZP_WORD:11 [ char_cursor#78 char_cursor#46 char_cursor#73 char_cursor#2 char_cursor#11 char_cursor#92 char_cursor#1 mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::$17 mulu8_sel::$0 mulu8_sel::$1 sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$6 ]
zp ZP_WORD:13 [ print_str::str#8 print_str::str#10 print_str::str#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 sin8s::isUpper#10 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:11 [ print_str::str#10 print_str::str#12 print_str::str#0 print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$6 ]
zp ZP_WORD:13 [ char_cursor#92 char_cursor#102 char_cursor#62 char_cursor#97 char_cursor#94 char_cursor#96 char_cursor#17 char_cursor#2 char_cursor#121 char_cursor#1 ]
zp ZP_WORD:15 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::sinx_sc#0 mulu8_sel::$0 mulu8_sel::$1 ]
reg byte a [ mul8u::b#2 mul8u::b#1 ]
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ]
reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ]
reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ]
reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ]
zp ZP_BYTE:15 [ mulu8_sel::select#5 ]
zp ZP_WORD:16 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8u_table::step#0 div16u::return#0 ]
zp ZP_BYTE:17 [ mulu8_sel::select#5 sin8u_table::sinx#0 ]
zp ZP_WORD:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8u_table::step#0 div16u::return#0 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte a [ sin8s::return#2 ]
reg byte y [ mul8su::a#0 ]
reg byte a [ sin8u_table::$18 ]
reg byte x [ sin8u_table::sinval#0 ]
reg byte a [ sin8u_table::$20 ]
reg byte x [ sin8u_table::sinx_tr#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ mul8su::$6 ]
reg byte a [ mul8su::$10 ]
reg byte a [ mul8u::$1 ]
zp ZP_BYTE:18 [ sin8s::x1#0 ]
zp ZP_BYTE:20 [ sin8s::x1#0 ]
reg byte a [ mulu8_sel::return#0 ]
reg byte a [ sin8s::x2#0 ]
reg byte a [ mulu8_sel::return#1 ]
zp ZP_BYTE:19 [ sin8s::x3#0 ]
zp ZP_BYTE:21 [ sin8s::x3#0 ]
reg byte a [ mulu8_sel::return#2 ]
reg byte a [ sin8s::x3_6#0 ]
zp ZP_BYTE:20 [ sin8s::usinx#0 ]
zp ZP_BYTE:22 [ sin8s::usinx#0 ]
reg byte a [ mulu8_sel::return#10 ]
reg byte a [ sin8s::x4#0 ]
reg byte a [ mulu8_sel::return#11 ]